

-Code
import java.util.*;
class Solution {
public int solution(int[] elements) {
int length = elements.length;
// 연결리스트이므로 확장
int[] extend = new int[length * 2];
for (int i = 0; i < length * 2; i++) {
extend[i] = elements[i % length];
}
// 중복이 없으므로 Set 선언
Set<Integer> totalSum = new HashSet<>();
// 길이에 따른 합 계산
for (int len = 1; len <= length; len++) {
// 시작점을 바꾸기
for (int start = 0; start < length; start++) {
// 길이만큼 더해서 저장
int sum = 0;
for (int i = start; i < start + len; i++) {
sum += extend[i];
}
totalSum.add(sum);
}
}
return totalSum.size();
}
}
원형 구조를 어떻게 해야 풀 수 있을까에 대해서 고민을 하다 시작을 못했었습니다. 그러나 길이를 배수로 늘려서 수를 저장하고 하면 마지막 수의 최대 길이만큼 더할 수 있으므로 이를 알게 된 후 쉽게 해결할 수 있었습니다.
'Beakjoon&프로그래머스 > Java' 카테고리의 다른 글
| [프로그래머스/Java] 기능개발 (0) | 2026.01.02 |
|---|---|
| [프로그래머스/Java] 할인 행사 (0) | 2026.01.02 |
| [프로그래머스/Java] 점프와 순간 이동 (0) | 2026.01.02 |
| [프로그래머스/Java] 멀리 뛰기 (0) | 2026.01.02 |
| [프로그래머스/Java] 행렬의 곱셈 (0) | 2026.01.02 |