[12924] 숫자의 표현 ⭐⭐
태그: cpp, Programmers
카테고리: Programmers
https://school.programmers.co.kr/learn/courses/30/lessons/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;
}
댓글남기기