[Programmers] 숫자의 표현 - Java Solution

문제

  • https://programmers.co.kr/learn/courses/30/lessons/12924

Solution

class Solution {
    public int solution(int n) {
        int answer = 0;

        for(int i=1; i<n+1; i++) {
            int sum = 0;

            for(int j=i; j<n+1; j++) {
                sum += j;

                if(sum == n) {
                    answer++;
                }

                if(sum >= n) {
                    break;
                }
            }
        }

        return answer;
    }
}

Bad Timeout Solution

아주 타임아웃이 심한 솔루션, 절대로 하면 안되는 방식

    public int solution(int n) {
        int answer = 0;

        long[] sumThroghN = new long[10000];

        sumThroghN[1] = 1;

        for (int i = 1; i < 10000; i++) {
            sumThroghN[i] = i * (i + 1) / 2;
        }

        for (int i = n+1; i >= 1; i--) {
            for (int j = 0; j < i + 1; j++) {
                long temp = sumThroghN[i] - sumThroghN[j];
                
                if(temp < n) {
                    break;
                }

                if (temp == n) {
                    answer++;
                }
            }
        }

        return answer;
    }

Leave a comment