알고리즘 정복하기!/백준 문제풀이

백준 4673번 Python / Math

by seokii 2022. 2. 8.
728x90
반응형

문제 링크

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

 

풀이

answer=[]

for i in range(10000):
    answer.append(i+1)

for i in range(1, 10000):
    if i < 10:
        i = i + i
    elif 10 <= i < 100:
        i = i + i//10 + i%10
    elif 100 <= i < 1000:
        i = i + i//100 + i%100//10 + i%10
    elif 1000 <= i < 10000:
        i = i + i//1000 + i%1000//100 + i%1000%100//10 + i%10
    if i in answer:
        answer.remove(i)

for i in range(len(answer)):
    print(answer[i])

 

다른 풀이

num = set(range(1,10001))
rmv = set()
for i in range (1,10001):
    for j in str(i):
        i += int(j)
    rmv.add(i)
num = num - rmv
for k in sorted(num):
    print(k)

 

- 항상 간결하게 코드를 작성하려고 노력하자...

728x90
반응형

'알고리즘 정복하기! > 백준 문제풀이' 카테고리의 다른 글

백준 10872번 Python / Math  (0) 2022.02.08
백준 2908번 Python / Math  (0) 2022.02.08
백준 3502번 Python / Math  (0) 2022.02.08
백준 4344번 Python / Math  (0) 2022.02.08
백준 1546번 Python / Math  (0) 2022.02.08

댓글