[프로그래머스 LV2] 숫자의 표현

popolarburr·2023년 4월 18일
0
post-thumbnail

- 문제



- 풀이


class Solution {
    public int solution(int n) {

        int[] arr = new int[n + 1];
        for (int i = 1; i <= n; i++) {
            arr[i] = i;
        }

        int lt = 1;
        int rt = 1;
        int count = 0;
        int sum = 0;

        while (lt <= rt && rt <= n) {
            if (sum < n) {
                sum += arr[rt++];
            } else if (sum > n) {
                sum -= arr[lt++];
            } else {
                count++;
                sum -= arr[lt++];
            }
        }

        return ++count; 
    }
}

- 정리

처음에 옛날에 풀어봤지만 못 푼 기억이 났다. 그래서 어떻게 풀까하다가, 최근에 살짝 공부해본 two-pointers & sliding window이 기억났다. 1부터 타겟넘버(문제에선 15)까지 계속 더하면서 하나의 포인터를 계속 따라가게 두고, 더한 값이 타겟 넘버보다 크거나 같으면 lt를 위로 올리면서 더한 값에서 빼는 식이였다. 그것이 생각나서 풀었더니 생각보다 되게 수월하게 풀었다.


[출처] : 프로그래머스 코딩테스트 숫자의표현
[출처] : 내가 앞서 공부했던 풀이

profile
차곡차곡

0개의 댓글