Publish:

태그: ,

카테고리:

https://school.programmers.co.kr/learn/courses/30/lessons/12924
난이도 ⭐⭐

문제

12924


나의 풀이

오랜만에 다시 푸는 코테라서 쉬운거 하나 풀어봤다.
문제의 ‘연속된 숫자’ 라는 문장에서 반복문을 2개 써야 한다고 생각해서 그대로 풀었다.
정답을 체크하는 반복문, 숫자를 연속하게 만들어내는 반복문 이렇게 2개.

첫 코드는 이랬다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include <string>
#include <vector>

using namespace std;

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

    int idx = 1;
    int idxKeep = idx;
    bool isDone = false;

    while (true)
    {
        int num = 0;

        isDone = false;

        for (idx; idx <= ((n / 2) + (n % 2)); idx++)
        {
            num += idx;

            if (num == n)
            {
                isDone = true;
                break;
            }
            else if (num > n)
            {
                isDone = false;
                break;
            }
        }

        if (isDone == true)
        {
            idx = idxKeep;
            idx++;
            idxKeep = idx;

            answer++;
        }
        else
        {
            idx = idxKeep;
            idx++;
            idxKeep = idx;
        }

        if (idx >= ((n / 2) + (n % 2)))
        {
            break;
        }
    }

    if (n > ((n / 2) + (n % 2)))
    {
        answer++;   // 본인
    }

    return answer;
}

통과는 하긴 했는데…
플머적으로 너무 ;;; 허접한 코드라고 생각되어서 다시 풀었다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
int solution(int n)
{
    int answer = 0;

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

        for (int current = start; current <= n; ++current)
        {
            sum += current;

            if (sum == n)
            {
                answer++;
                break;
            }
            else if (sum > n)
            {
                break;
            }
        }
    }

    return answer;
}

이슈 및 공부한 것을 기록해두는 개인 블로그 입니다. 댓글, 피드백 환영합니다 🙂

Update:

댓글남기기