1. 문제 상세
https://www.acmicpc.net/problem/2231
2. 문제 접근
입력받은 수 N 의 생성자를 구하자.
이를 위해 1부터 N 까지의 수들을 확인하며 그 수와 각 자릿수를 더한 값이 N이 되는 첫 번째 경우 그 수를 출력하자.
3. 문제 풀이
#include <iostream>
using namespace std;
int main() {
int n, ans = 0;
cin >> n;
for (int i = 1; i < n; i++) {
int sum = 0, a = i;
while (a != 0) {
sum += a % 10;
a /= 10;
}
if (sum + i == n) {
ans = i;
break;
}
}
cout << ans;
}
정수형 변수 n, ans 를 선언, ans 를 0으로 초기화.
cin 으로 정수를 입력받아 n 에 저장.
for문으로 i 가 1부터 n 까지 1씩 더하며 반복.
반복에서는 정수형 변수 sum, a 를 선언하고 각각 0, i 로 초기화.
while문으로 a 가 0이 아닐 때 반복.
반복에서는 sum 에 a 를 10으로 나눈 나머지 값을 더하고, a 를 10으로 나눠서 저장한다.
반복이 끝나면 if문으로 sum 에 i 를 더한 값이 n 과 같다면 ans 에 i 값을 저장하고 break 로 반복을 빠져나간다.
반복이 끝나면 cout 으로 ans 의 값을 출력한다.
4. 성능 확인
5. 마무리
.
'백준 - 단계별로 풀어보기 > 브루트 포스' 카테고리의 다른 글
[백준] 2839번 : 설탕 배달 | C++ (0) | 2023.11.01 |
---|---|
[백준] 1436번 : 영화감독 숌 | C++ (0) | 2023.11.01 |
[백준] 1018번 : 체스판 다시 칠하기 | C++ (0) | 2023.11.01 |
[백준] 19532번 : 수학은 비대면강의입니다 | C++ (1) | 2023.10.31 |
[백준] 2798번 : 블랙잭 | C++ (0) | 2023.10.31 |