문제
접근
start = 1와 end = 1를 이용한다.
- end부터 숫자를 더해나가며 n보다 같거나 커지게 만든다.
- n과 같다면 경우의 수를 한개 더한다.
- start부터 숫자를 하나씩 빼며 n보다 같거나 작아지게 만든다.
- n과 같다면 경우의 수를 한개 더한다.
- 다시 1로 돌아간다.
코드
- 파이썬 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def solution(n):
answer = 0
start = 1
end = 1
now = 0
while start < n:
while now <= n:
now += end
end += 1
if now == n:
print(start, end)
answer += 1
break
while now >= n:
now -= start
start += 1
if now == n:
print(start, end)
answer += 1
break
return answer
- C++ 코드
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
#include <vector>
using namespace std;
int solution(int n) {
int answer = 0;
int start = 1, end = 1;
int now = 0;
while(start<n){
while(now<=n){
now += end;
end++;
if(now==n){
answer++;
break;
}
}
while(now>=n){
now -= start;
start++;
if(now==n){
answer++;
break;
}
}
}
return answer;
}