코테/프로그래머스

[프로그래머스/Lv. 2] 연속 부분 수열 합의 개수 (JAVA)

imname1am 2023. 9. 14. 15:45
반응형

🔺 문제

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

🔺 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import java.util.*;
import java.io.*;
 
class Solution {
    static int[] elements;
    static Set<Integer> set = new HashSet<>();  // 부분 수열 합 집합
    
    public int solution(int[] elements) {
        this.elements = elements;
        
        // n개 뽑는 경우의 수
        for(int len = 0 ; len < elements.length ; len++) { // 현재 인덱스 + 0 ~ 마지막 인덱스까지 길이 더하기
            for(int i = 0 ; i < elements.length ; i++) { // 첫 번째 인덱스부터 마지막 인덱스까지 접근
                solve(i, i + len);
            }
        }
        
        return set.size();
    }
    
    private static void solve(int a, int b) {
        int tmp = 0;
        for(int i = a ; i <= b ; i++) {
            tmp += elements[i % elements.length];
        }
        
        set.add(tmp);
    }
}
cs
✅ 해결 아이디어
✔ Set
- 0부터 elements.length - 1번째 원소가
(각자 위치 ~ 각자 위치 + a)만큼 더한 범위에서 어떤 값이 나오는지 구하고,
집합에 저장한다.

 


💬 느낀 점

 

이것이 레벨2..?

백준이랑 레벨이 좀 차이나서 조금 당황스럽다...

 

1회독 2회독 3회독 4회독 5회독
V        

 

반응형