반응형
Notice
Recent Posts
Recent Comments
«   2024/09   »
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
Archives
관리 메뉴

Easy-So-Easy

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

BaekJoon

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

섭_민 2023. 6. 22. 05:46
반응형

백준 2231 문제(Problem)

2231
백준 2231 문제

 

풀이(Solution)

이 문제는 닥치는 대로 해보자는 용기를 가지고 있는 사람이라면 매우 쉽게 풀 수 있는 문제이다. 왜냐면 브루트포스 문제이기 때문이다.

 

이 문제를 요약하자면 M의 분해합이 N인경우, M을 N의 생성자라고 부르는데, N이 주어졌을 때 가장 작은 생성자를 구하고, 생성자가 없는 경우는 0을 출력하는 문제이다.

 

M <= N인 것은 변함없는 사실이다. 그래서 필자는 1부터 n까지 for문을 돌려 M을 찾는 방식을 택했다.

 

M을 찾는 방식은  아래의 코드와 같다.

int k=i;
int M=i;
while(k){
  M += k%10;
  k /= 10;
}

 

알맞은 M을 찾았다면 가장 작은 생성자를 구하는 문제이니 출력하고 main함수를 종료시켜주었다.

 

전체 코드(Code)

#include<iostream>
using namespace std;

int main(){
  ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
  int n; cin >> n;
  for(int i=1; i<=n; i++){
    int k=i;
    int M=i;
    while(k){
      M += k%10;
      k /= 10;
    }
    if(M==n){
      cout << i;
      return 0;
    }
  }
  cout << 0;
}
반응형

'BaekJoon' 카테고리의 다른 글

[백준] 1259번 팰린드롬수 - C/C++  (0) 2023.06.22
[백준] 10872번 팩토리얼 - C/C++  (0) 2023.06.22
[백준] 2798번 블랙잭 - C/C++  (0) 2023.06.22
[백준] 2580번 스도쿠 - C/C++  (0) 2023.06.21
[백준] 9663번 N-Queen - C/C++  (0) 2023.06.20