BAEKJOON

[백준] 4673 - 셀프 넘버

멍정 2022. 9. 18. 22:54

뭐라도 하는 삶을 살기 위해..

백준을 조금씩 풀어볼까 합니다..

 

오늘의 문제는 셀프 넘버!

무한 수열..이라니..

뭔가 재귀가 쓰일 것 같고 ..그런 느낌..이라서..써봤습니다.

사실 재귀 진짜 못써서 이번에 거의 2번째.. 3번째 하는데

단순하게 조건을 나눠서 푸는게 좋았을지 재귀를 쓰는게 좋았을지는 잘 모르겠어요.

(빅오표기법..같은거 분명 배웠는데 말이죠)

 

어쨋거나 중요한건 풀이방법!

생성자가 없는 숫자를 셀프 넘버라고 한다면

생성자를 전부 제거하면 된다!

 

10000짜리 배열을 만들어서 전부 0으로 돌리고

생성자를 해당 숫자 자리에 true 대신 1로 바꾸면 //bool로 할 걸 그랬나 싶기도 하고

값이 0인 결과만 출력하면 된다~~

#include <stdio.h>

int SelfNumber(int sum, int num);
int count[10001] = {0};
int main()
{
    int number = 0;
    for(int i = 1; i < 10001; i++){
        number = 0;
        count[SelfNumber(number, i) + i] = 1;
    }
    for(int n = 1; n < 10001; n++){
        if(count[n] != 1)
            printf("%d\n", n);
    }
    return 0;
}

int SelfNumber(int sum, int num)
{
    if(num < 10){
        sum += num;
        return sum;
    }
    sum += num % 10;
    sum = SelfNumber(sum, num / 10);
    return sum;
}

설명..잘 모르겠습니다..

그냥 열심히 푸는걸 목표로 해볼게요..

'BAEKJOON' 카테고리의 다른 글

[백준] 1157 - 단어 공부  (0) 2022.11.24
[백준] 2675 - 문자열 반복  (1) 2022.11.22
[백준] 10809 - 알파벳 찾기  (0) 2022.11.21