Make Unreal REAL.
article thumbnail
Level 2. 숫자의 표현

 

 

첫 번째 시도에서는 정답이었으나 시간 초과가 발생했다.

 

DP를 통해 간단하게 각 수까지의 합을 구했으나, 모든 경우의 수를 확인해서 그런 것 같다.

 

// 이 풀이는 시간 초과가 발생한다.
#include <iostream>
#include <vector>

using namespace std;

int solution(int n)
{
    int answer = 0;
    vector<int> sum(n + 1, 0);

    for (int i = 1; i <= n; ++i)
        sum[i] = sum[i - 1] + i;

    for (int i = 1; i <= n; ++i)
        for (int j = 0; j < n; ++j)
            if (sum[i] - sum[j] == n)
                ++answer;

    return answer;
}

 

각 수부터 n보다 작은 동안만 더해 시간 초과를 해결했다.

 

#include <iostream>

using namespace std;

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

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

        for (int j = i; sum < n; ++j)
            if ((sum += j) == n)
                ++answer;
    }

    return answer;
}

'자료구조 & 알고리즘 > 프로그래머스' 카테고리의 다른 글

Level 2. 큰 수 만들기  (0) 2023.04.03
Level 2. 다음 큰 숫자  (0) 2023.04.02
Level 2. 프린터  (0) 2023.03.31
Level 2. 올바른 괄호  (0) 2023.03.30
Level 2. 행렬의 곱셈  (0) 2023.03.29
profile

Make Unreal REAL.

@diesuki4

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그