알고리즘/BOJ

백준 4673번 셀프 넘버

꾸준함. 2018. 9. 16. 02:52

문제 링크입니다: 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