반응형
링크
https://www.acmicpc.net/problem/4673
풀이
10,000보다 작거나 같은 셀프 넘버를 출력하는 문제입니다.
숫자가 작기 때문에 셀프 넘버가 아닌 숫자를 지우는 방식을 사용하면 됩니다.
셀프 넘버 체크 배열을 만들고 i를 1부터 증가시키면서 셀프 넘버가 아닌 수들을 지워줍니다.
셀프 넘버를 출력합니다.
코드
//4673_셀프 넘버
#include <cstdio>
using namespace std;
int n, arr[12000];
int main() {
for (int i = 1; i < 10000; ++i) {
int cnt = i, tmp = i;
while (tmp) { // 수를 만든다
cnt += tmp%10;
tmp /= 10;
}
arr[cnt] = 1; // 생성자가 있다 -> 셀프 넘버가 아니다
}
for (int i = 1; i <= 10000; ++i) {
if (!arr[i]) printf("%d\n", i); // 셀프 넘버 출력
}
return 0;
}
반응형
'PS > BOJ' 카테고리의 다른 글
[백준 BOJ] 2292 벌집 (1) | 2020.03.07 |
---|---|
[백준 BOJ] 2839 설탕 배달 (0) | 2020.03.07 |
[백준 BOJ] 1065 한수 (0) | 2020.02.29 |
[백준 BOJ] 3047 ABC (0) | 2019.08.13 |
[백준 BOJ] 5585 거스름돈 (0) | 2019.08.13 |