본문 바로가기
알고리즘 풀이/백준

[백준 4673] 셀프 넘버 (python)

by char_lie 2023. 4. 7.
반응형

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

셀프 넘버 문제

n과 n의 각 자리 수를 더하는 함수 d(n)에 대해 10000보다 작은 셀프 넘버들을 출력해보는 문제

구현 문제라 요구사항 대로 풀어주면 어렵지 않게 풀 수 있다.

 

⚙️ 내가 푼 정답코드

def self_num(n): # 생성자 만들기
    x = list(str(n))
    result = 0
    for i in range(len(x)):
        result += int(x[i])
    result = result + n
    return result

results = set() # 중복제거를 위해 set함수 사용
for i in range(10000):
    results.add(self_num(i))
for m in range(1,10001):
    if m not in results: # 생성자 안에 없다면 셀프넘버
        print(m)

📌 문제 접근 포인트

1. 셀프 넘버를 찾아주기 위한 생성자를 먼저 만들어 주자.
2. 요구 조건 대로 각 자리를 더해주고, 그 숫자를 더해줄 수 있는 함수를 만들어 주고, 10000까지 생성자를 찾아주자.
3. 생성자를 찾았으면 10000이하의 숫자 중에 생성자에 없는 숫자들을 출력해주면 그것이 셀프 넘버이다.
반응형

댓글