셀프 넘버 - 실버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