코딩 테스트 준비
셀프 넘버 - 실버5 (구현문제)
개발쉐발
2023. 1. 10. 15:43
728x90
반응형
dp = [i for i in range(10001)]
for i in range(10001):
num = i
for j in str(i):
num += int(j)
if num in dp:
dp.remove(num)
for i in dp:
print(i)
간단하게 셀프넘버의 규칙에 맞게 값을 구해주고 해당하는 값이 존재하면 지워주는 방법을 선택했는데 시간이 208ms가 나왔다. 느린 건 아니지만 예전에 풀었던 코드가 80ms이길래 확인해보았다.
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)
아마 예전에는 문제를 풀지 못하고 답만을 가져왔던 거 같은데 확실히 문제에서 준 힌트처럼 중복되는 경우를 제외하면 그 시간이 줄어들 것이고 파이썬에서 set은 중복삭제 만이 아닌 수식도 제공을 하기에 시간을 더 아낄 수 있는 거 같다.
다음에 중복인 문제가 있을 경우 set을 꼭 사용해보자
728x90
반응형