알고리즘 공부/파이썬(Python)

백준 4673번 셀프 넘버 파이썬

마달랭 2024. 7. 5. 01:27
반응형

리뷰

입력이 없어 당황했는데 그다지 어렵지 않은 문제였다.

 

문제 풀이

  1. 10001개 길이의 배열을 False로 초기화 해준다.
  2. for문을 개행해 주고 현재 숫자 + 각 자릿수의 합을 구해준 뒤 배열의 해당 인덱스를 True로 바꿔준다.
  3. 배열 중 False값을 가진 인덱스를 출력해 준다.

 

참고 사항

배열의 범위를 넘어간 즉, 10000이상의 숫자는 무시한다.

 

 

정답 코드

def q4673():
    # 백준 4673번 셀프 넘버 파이썬
    dp = [False] * 10001
    for i in range(1, 10001):
        temp = i
        while i > 0:
            temp += i % 10
            i //= 10
        if temp < 10000:
            dp[temp] = True
    for i in range(1, 10000):
        if not dp[i]:
            print(i)
q4673()

 

 

728x90
반응형