순서대로 for문 돌려주면 된다.
1부터 1+2+3 ..
2부터 2+3+4 ..
이런식으로 계산하면서 조건에 맞으면 answer를 증가시켜준다.
효율성에서 걸리면 sum>n이 되면 break; 하는 조건을 추가해주면 된다.
이 조건이 없다면 이미 더해온 값이 n이 아닌데도 계속 j를 더해주는 일이 생긴다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#include <string>
#include <vector>
using namespace std;
int solution(int n) {
int answer = 0;
for(int i=1;i<n;++i){
int sum=0;
for(int j=i;j<n;++j){
sum+=j;
if(sum==n){
answer++;
break;
}
if(sum>n) break;
}
}
return ++answer;
}
|
cs |