[코딩테스트] 프로그래머스 - 연속 부분 수열 합의 개수 (Java)

proman·2022년 10월 15일
2

Coding-Test

목록 보기
20/21
post-thumbnail

⚽ 설명

레벨: 2
언어: 자바(Java)

🥌 느낀점

최근에 나온 문제여서 좋아요 많이 받은 코드는 없어서 따로 추가 안합니다.
레벨2에서도 하위권 문제인데 시간내서 풀어봤습니다

해당문제는 Set을 활용한 문제입니다.
풀이방법
1. 원형수열로 끝자리에서 처음자리로 다시이어지는 경우로 인해 배열을 2배 추가로 늘리기
2. 합계 중복 미허용 set 변수선언
3. 순차 인덱스에서 n번까지 실행을 더한값 set 저장
4. set 크기 반환

🏀 내가 작성한 코드

import java.util.*;
import java.util.stream.*;

class Solution {
    public int solution(int[] elements) {
        int[] newElements = new int[elements.length * 2];
        
        for(int i = 0; i < elements.length; i++) {
            newElements[i] = newElements[i + elements.length] = elements[i];
        }
        
        Set<Integer> set = new HashSet<>();
        
        for(int i = 1; i <= elements.length; i++) {
            for(int j = 0; j < elements.length; j++) {
                set.add(Arrays.stream(newElements, j, j+i).sum());
            }
        }
        
        return set.size();
    }
}

0개의 댓글