백준 4673 셀프넘버 파이썬

최대 1 분 소요

백준 4673번 셀프넘버 풀이

접근방식

  1. for문을 통해 i(자기자신) + 첫째자리수 + 둘째자리수 + … + len(i) 까지 수행해줍니다.
  2. num이라는 변수에 해당 결과값을 저장하고 이를 li라는 리스트에 담습니다.

    해당 리스트에 담긴 수들은 모두 생성자가 존재한다는 의미이므로 다시 1부터 10,000까지 for문을 돌려서 비교해주면 됩니다.

  3. 결과적으로 해당 리스트에 저장된 수와 1~10000까지의 수를 비교하여 리스트에 존재하지 않는다면 출력하도록 합니다.
li = [] # 셀프넘버가 아닌 수들을 저장하는 리스트
num = 0 # 임시 계산 변수
for i in range(1, 10000):
    num += i
    for j in str(num):
        num += int(j)
    li.append(num)
    num = 0 # 해당 길이만큼 더해줬다면 다시 0으로 초기화

for i in range(1, 10000):
    if i not in li:
      # 리스트에 존재하지 않는다 = 셀프넘버
        print(i)

해당 문제는 실버5레벨에 해당하므로 어렵지 않게 풀 수 있는 문제였습니다.

알고리즘도 모든 것과 마찬가지로 꾸준한 연습과 이해를 바탕으로 실력이 향상합니다.

Just do it & Keep steady

댓글남기기