728x90
반응형
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
📌 접근 방식
🔸 1. 원형 수열이란?
- 일반 수열처럼 처음부터 끝까지만 보는 것이 아니라,
- 마지막 요소 뒤에 첫 요소가 다시 연결되어 있는 것처럼 생각.
- 예: [7, 9, 1, 1, 4] → 원형으로 보면 [7, 9, 1, 1, 4, 7, 9, 1, 1, 4, ...] 처럼 시작 위치에 따라 연결되어 감싸지는 구조.
🔸 2. 연속 부분 수열 합이란?
- 길이 1부터 전체 길이까지 가능한 모든 연속 부분 수열을 잡아,
- 그 부분 수열의 합을 구함
- 예: [7, 9, 1, 1, 4]
- 길이 1 → [7], [9], [1], [1], [4] → 합: 7, 9, 1, 1, 4
- 길이 2 → [7,9], [9,1], ..., [4,7] → 끝에서 시작까지도 포함해야 함
🔸 3. 중복 제거를 위해 Set 사용
- 합의 결과 중복을 제거하기 위해 HashSet에 담음
🔸 4. 원형 처리를 위한 인덱스 순환
- j % elements.length 사용해서 인덱스가 범위를 벗어날 경우 순환 처리
PASS CODE
import java.util.*;
class Solution {
public int solution(int[] elements) {
int answer = 0;
Set<Integer> set = new HashSet<>();
int len=1;
while(true) {
int sum = 0;
for(int i=0; i<elements.length; i++) {
sum = 0;
if(len==1) {
set.add(elements[i]);
}
for(int j=i; j<len+i; j++){
int k = j;
if(j >= elements.length) {
k=j % elements.length;
}
sum += elements[k];
}
set.add(sum);
}
if(len == elements.length) {
break;
}
len ++;
}
answer = set.size();
return answer;
}
}
728x90
반응형
'Coding Test > Programmers' 카테고리의 다른 글
[JAVA][Programmers] 타겟 넘버 (1) | 2025.03.19 |
---|---|
[Java][Programmers] 기능개발 (0) | 2025.03.17 |
[Java][Programmers] 영어 끝말잇기 (0) | 2025.03.17 |
[Java][Programmers] N개의 최소공배수 (0) | 2025.03.17 |
[Java][Programmers] 귤 고르기 (0) | 2025.03.17 |