문제
https://www.acmicpc.net/problem/4673
풀이
- 1~10000 까지의 값을 배열에 저장한다.
- 1~10000 까지 루프를 돌면서 셀프넘버를 구한다.
- 구한 셀프넘버를 배열에서 소거시킨다.
- 배열에 남은 값들을 출력시킨다.
각각의 셀프 넘버는 값이 들쭉날쭉하게 만들어지고
소거시키는 동작이 엄청 많은 시간을 잡아먹기 때문에
딕셔너리 자료구조를 이용했다.
numbers = {i:1 for i in range(1, 10001)} # 딕셔너리에 저장
for i in range(1, 10001):
num = i + sum(map(int, str(i))) # 셀프넘버를 구한다.
numbers[num] = 0 # 딕셔너리에서 해당 셀프넘버 소거
for key, val in numbers.items():
if val == 1: print(key) # 딕셔너리에 남은 값 출력
댓글남기기