본문 바로가기

알고리즘/BOJ

[C++] 백준 2231번 - 분해합


0. 문제

 

https://www.acmicpc.net/problem/2231

1. 아이디어

 

1) 각 자릿수를 사용해 계산을 하기 위해 '%' 연산을 통해 한 자리씩 올라간다.

 

2. 소스코드

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
int main()
{
    int N;
    std::cin >> N;
    for (int i = 1; i <= N; i++)
    {
        int s = 0;
        for (int d = i; d > 0; d /= 10)
        {
            s += d % 10;
        }
        if (s + i == N)
        {
            std::cout << i;
            return 0;
        }
    }
    std::cout << "0";
}
cs

 

3. 결과

 

4. 피드백

 

  • 자릿수 연산을 할 때에는 기본적으로 가장 낮은 자리의 수부터 연산을 한다고 생각!

 

'알고리즘 > BOJ' 카테고리의 다른 글

[C++] 백준 10448번 - 유레카 이론  (0) 2020.03.01
[C++] 백준 3085번 - 사탕 게임  (0) 2020.03.01
[C++] 백준 2309번 - 일곱 난쟁이  (0) 2020.02.29
[C++] 백준 10866번 - 덱  (0) 2020.02.29
[C++] 백준 1966번 - 프린터 큐  (0) 2020.02.29