티스토리 뷰

Algorithm/BOJ

백준 4673번 C++

poopooreum 2023. 8. 17. 20:56
반응형
백준 4673번 셀프 넘버

https://www.acmicpc.net/problem/4673

4673번: 셀프 넘버

셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때,

www.acmicpc.net



정답 코드

#include <iostream>
using namespace std;
int  arr[10001];
int main() {
    int res = 0;
    for (int x = 1; x <= 10000; x++) {
        if (x< 10) {
            res = x + x;
            arr[res]++;
        }
        else if (x < 100) {
            res = x + (x / 10) + (x % 10);
            arr[res]++;
        }
        else if (x < 1000) {
            res = x + (x / 100) + ((x % 100) / 10) + ((x % 100) % 10);
            arr[res] ++;
        }
        else if (x < 10000) {
            res = x + (x / 1000) + ((x % 1000) / 100) + (((x % 1000) % 100) / 10) + (((x % 1000) % 100) % 10);
            if (res <= 10000)
                arr[res]++;
        }
    }

    for (int x = 1; x <= 10000; x++) {
        if (arr[x] ==0)
            cout << x << "\n";
    }
    return 0;
}

문제 풀이

단순한 반복문 문제입니다. 10000까지 반복문을 돌리고 주어진 조건처럼 수를 더해준 뒤 나온 수를 임의의 배열에 ++해주고 그 배열을 반복문을 돌려서 0보다 큰 인덱스값만 출력해주면 됩니다. 이렇게 체크하는 방식을 카운팅 정렬 방식이라고 합니다.

반응형

'Algorithm > BOJ' 카테고리의 다른 글

백준 4949번 C++  (0) 2023.08.18
백준 4948번 C++  (0) 2023.08.18
백준 4344번 C++  (0) 2023.08.17
백준 4179번 C++  (0) 2023.08.17
백준 4153번 C++  (0) 2023.08.17
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함