프로그래머스_연속 부분 수열 합의 개수

LeeYulhee·2023년 10월 5일
0

💻 문제 출처 : 프로그래머스_연속 부분 수열 합의 개수

👉 내가 작성한 답


import java.util.*;

class Solution {
    public int solution(int[] elements) {
        
        Set<Integer> set = new HashSet<>();
        
        int elementsLength = elements.length;
        
        for(int i = 0; i < elementsLength; i++) {
            
            int chapter = 0;
            
            for(int j = 0; j < elementsLength; j++) {
                chapter += elements[(i + j) % elementsLength];
                set.add(chapter);
            }
        }
        
        return set.size();
    }
}
  • 📌 접근 방식
    • 중복 값이 count되면 안 돼서 Set 사용
    • 부분 수열은 1부터 elements의 길이가 최대이니 각 요소의 +0부터 +elements의 길이까지 더해가며 Set에 추가
  • 📌 문제 풀이 설명
    • Integer를 값으로 갖는 Set 선언
    • int 변수 elementsLength를 elements의 길이로 초기화
    • for문으로 0부터 elementsLength 미만까지 1씩 증가하며 순회
      • int 변수 chapter를 선언하고 0으로 초기화
      • for문으로 0부터 elementsLength 미만까지 1씩 증가하며 순회
        • chapter에 elements의 (i + j ) % elementsLength 번째 요소를 더함
          • 현재 확인 중인 i 칸에서 j만큼 떨어진 칸들을 더해가는 거라 i + j
          • 다만 배열의 인덱스를 넘었을 때 다시 첫 번째 요소로 돌아와야 하기 때문에 elementLength로 나눈 나머지 값을 인덱스로 사용
        • set에 chapter 추가
    • for문 종료 후 set의 길이 return
profile
공부 중인 신입 백엔드 개발자입니다

0개의 댓글