본문 바로가기

Study/Algorithm

[Level 2] 6. 숫자의 표현

6. 숫자의 표현


Algorithm - Level 2


- 풀이


복잡해보이지만 생각을 단순하게 하면 쉽다.


1. 3, 5, 7, 9 ... 의 숫자들은 1+2, 2+3, 3+4, 4+5 ... 와 같이 표현이 가능하다.


-> 즉 2로 나눴을 때 나머지가 1이면 다음과 같은 표현이 가능하다 (단, 1은 제외)


2. 1+2+3, 2+3+4, 3+4+5 와 같은 표현이나, 1+2+3+4, 1+2+3+4+5와 같은 식을 표현하기 위해 이중 for문을 사용한다.


3. for문의 효율성을 위해 입력 n의 값의 절반까지만 접근한다. ( 이보다 큰 수는 연속되어 표현이 불가능하다.)

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
#include <string>
#include <vector>
#include <iostream>
using namespace std;
 
int solution(int n) {
    int answer = 1;
 
    if(n!=1)
        answer = n%2==1 ? answer+1 : answer;
 
    int tmp;
    for(int i=1; i<=n/2; i++){
        tmp = 0;
        for(int j=i; j<=n/2; j++){
            tmp+=j;
            if(tmp>n)
                break;
 
            if(tmp==n){
                answer++;
                break;
            }
        }
    }    
    return answer;
}
 
int main(void){
    int n=15;
 
    cout << solution(n) << endl;
}
cs


'Study > Algorithm' 카테고리의 다른 글

[Level 2] 8. 최소값 만들기  (0) 2018.07.26
[Level 2] 7. 최대값과 최소값  (0) 2018.07.24
[Level 2] 5. 땅따먹기  (0) 2018.07.20
[Level 2] 4. 다음 큰 숫자  (0) 2018.07.20
[Level 2] 3. 올바른 괄호  (0) 2018.07.18