셀프 넘버 - 실버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
반응형
'코딩 테스트 준비' 카테고리의 다른 글
기지국 설치 - level3 (winter/summer coding) (0) | 2023.01.10 |
---|---|
제로 - 실버4 (구현문제) (0) | 2023.01.10 |
내리막길 - 골드3 (2) | 2023.01.09 |
숫자게임 - level 2 (0) | 2023.01.09 |
두 큐 합계 같게 하기 (0) | 2023.01.08 |