문제 링크입니다: https://www.acmicpc.net/problem/4673
간단한 문제였습니다.
알고리즘은 아래와 같습니다.
1. 1 ~ 10,000까지 D 함수의 매개변수로 전달하여 결과가 10,000 이하인 숫자들에 대해 방문 처리를 해줍니다.
2. 1 ~ 10000 사이에 방문 처리되지 않은 숫자들을 출력해줍니다.
#include <iostream>
using namespace std;
const int MAX = 10000 + 1;
bool visited[MAX];
int D(int N)
{
int result = N;
//반복문을 이용하여 N의 자릿수로 케이스를 나눌 필요가 없다
while (N)
{
result += N % 10;
N /= 10;
}
return result;
}
int main(void)
{
ios_base::sync_with_stdio(0);
cin.tie(0);
for (int i = 1; i < MAX; i++)
{
int cur = D(i);
if (cur < MAX)
visited[cur] = true;
}
for (int i = 1; i < MAX; i++)
if (!visited[i])
cout << i << "\n";
return 0;
}
개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
'알고리즘 > BOJ' 카테고리의 다른 글
백준 2879번 코딩은 예쁘게 (0) | 2018.09.18 |
---|---|
백준 4604번 Steganography (0) | 2018.09.16 |
백준 10552번 DOM (0) | 2018.09.16 |
백준 10551번 STROJOPIS (0) | 2018.09.16 |
백준 15753번 Taming the Herd (0) | 2018.09.15 |