Algorithm/C++ - 프로그래머스

프로그래머스 Level2 - 숫자의 표현 C++

ㅇㅇ잉 2021. 3. 25. 21:12

순서대로 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
ee