반응형
https://www.acmicpc.net/problem/4673
- 문제
해설
n의 다음 항은 n + (n의 각 자리 수의 합)이다. 123 -> 123 + 1 + 2 + 3 = 129이다.
다음 항을 구하는 함수를 int d(int n) 함수에 작성하였다.
메인 함수에서 1부터 10000까지 수의 다음 항을 구하여 배열에 true로 저장하였다.
즉 true로 저장된 값은 생성자가 있다는 의미로 셀프 넘버가 아니다.
*배열에 저장할 때 수가 10000 이하일 때만 처리해주어야 한다.
따라서 1부터 10000까지 순회하며 false인 경우의 수만 출력하면 된다.
함수 없이 풀 수 있는 문제지만 함수 파트니 함수를 활용하여 푸는 걸 추천한다.
코드
c
#include <stdio.h>
bool check[10001];
int d(int n) {
int sn = n;
while (n != 0) {
sn += n % 10;
n /= 10;
}
return sn;
}
int main() {
int n;
for (int i = 1; i <= 10000; i++) {
n = d(i);
if (n <= 10000) check[n] = true;
}
for (int i = 1; i <= 10000; i++) {
if (!check[i]) printf("%d \n", i);
}
return 0;
}
c++
#include <iostream>
using namespace std;
bool check[10001];
int d(int n) {
int sn = n;
while (n != 0) {
sn += n % 10;
n /= 10;
}
return sn;
}
int main() {
int n;
for (int i = 1; i <= 10000; i++) {
n = d(i);
if (n <= 10000) check[n] = true;
}
for (int i = 1; i <= 10000; i++) {
if (!check[i]) cout << i << '\n';
}
return 0;
}
반응형
'알고리즘 > 백준 문제 풀이' 카테고리의 다른 글
[BOJ/백준] 11654번 아스키 코드 - [c/c++] 풀이 (0) | 2022.10.14 |
---|---|
[BOJ/백준] 1065번 한수 - [c/c++] 풀이 (0) | 2022.10.13 |
[BOJ/백준] 15596번 정수 N개의 합 - [c/c++] 풀이 (0) | 2022.10.13 |
[BOJ/백준] 4344번 평균은 넘겠지 - [c/c++] 풀이 (0) | 2022.10.12 |
[BOJ/백준] 8958번 OX퀴즈 - [c/c++] 풀이 (0) | 2022.10.12 |
댓글