일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- C++
- 15649
- 백준
- rust설치
- 14503
- 테트로미노
- 연산자 끼워넣기 성공
- 백트래킹
- rustup
- 14890
- 14891
- 14501
- 문제풀이
- 1259
- 15683
- 팰린드롬수
- 13458
- 15651
- 러스트란 #cargo
- 분해합
- 3190
- 2798
- 15652
- 15650
- 10872
- 9663
- C
- 14500
- 14888
- 13460
Archives
Easy-So-Easy
[백준] 2231번 분해합 - C/C++ 본문
반응형
백준 2231 문제(Problem)

풀이(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 |