[baekjoon / Python] 4673 셀프넘버

yujeongkwon·2022년 3월 19일
0

baekjoon

목록 보기
1/8

처음 생각

100이 셀프 넘버인지 아닌지 확인하기 위해서 for문을 통해 100까지 돌릴려했음.
==> 시간 낭비

결과 코드

  1. 10001개의 리스트를 만들어 모두 False로 설정
  2. 10001 까지 돌면서 해당하는 수 (i) 의 각 자리 숫자들을 더해 나온 값을 True로 바꿔줌.
  3. 마지막에 한번더 10001까지 for문을 돌면서 False인 값들의 인덱스를 출력해줌.

시간복잡도

시간복잡도 계산하는 법 잘 모름. 일단 처음 문제를 보자마자 생각한 방법보다는 효율적인 것만 안다. 비슷하지 않은 이상 뭐가 더 나을 지 판단하는 정도.. 시간 복잡도 / 메모리 측면 간단하게 알고리즘 풀 때 도움될 정도의 계산 법을 정리해야겠다.
대충 (li 리스트 만드는 것 n(10001 or 1000)) + (i설정 2번) + (n=i n번)
+ ~~~ 이런식으로 계산하면 .. 8-8

li = [ False for i in range(10001)]
for i in range(1,10001):
    n = i
    for j in str(i):
        n += int(j)
    if n<10001: li[n] = True

for i in range(1,10001):
    if not li[i]:  print(i)
profile
인생 살자.

0개의 댓글