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

namkun·2023년 1월 23일
0

코딩테스트

목록 보기
63/79
post-custom-banner

문제 링크

연속부분 수열 합의 개수

풀이

  • 주어진 배열을 두 배로 우선 늘린다. 그래야 아웃 오브 인덱스 익셉션 안나지..
  • 처음에는 중복 for문으로 생각했다가 잘 안풀려서 투 포인터 알고리즘을 쓰는건가 싶었다.
  • 근데 그냥 중복 for 문으로 풀면 되더라.. 성능이 이상하게 나오지만;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import java.util.stream.IntStream;

class Solution {
    public int solution(int[] elements) {
        Set<Integer> answerSet = new HashSet<>();

        int[] doubleElements = new int[elements.length * 2];
        IntStream.range(0, elements.length).forEach(i -> {
            doubleElements[i] = elements[i];
            doubleElements[elements.length + i] = elements[i];
        });

        for (int i = 1; i <= elements.length; i++) {
            for (int j = 0; j < elements.length; j++) {
                answerSet.add(Arrays.stream(doubleElements, j, j + i).sum());
            }
        }

        return answerSet.size();
    }
}

후기

  • Arrays.stream에서 범위를 쥐어줄 수 있다는 것을 처음 알았다.
profile
개발하는 중국학과 사람
post-custom-banner

0개의 댓글