Algorithm/Programmers
[Programmers] 연속 부분 수열 합의 개수 / ⭕
cks._.hong
2024. 10. 3. 23:40
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1. 제출 코드 (21분 32초 / 구현)
import java.util.*;
class Solution {
public int solution(int[] elements) {
int answer = 0;
Set<Integer> set = new HashSet<>();
for(int i = 1; i <= elements.length; i++) {
for(int j = 0; j < elements.length; j++) {
int temp = 0;
int idx = j;
int cnt = 0;
while(cnt < i) {
if(idx >= elements.length) {
idx = 0;
}
temp += elements[idx++];
cnt++;
}
set.add(temp);
}
}
answer = set.size();
return answer;
}
}
2. 구현 로직
- for문을 이용하여 연속 부분 수열의 길이 지정
- 2중 for문을 작성하여 수열이 시작하는 위치를 갱신
- whlie문을 통해 연속 부분 수열의 합을 구하는데 원형 수형이므로 idx가 elements의 길이를 넘어가면 0으로 갱신
- 나온 값을 set에 저장하여 중복 제거