티스토리 뷰

코딩테스트/백준

백준-4673(파이썬)

김쓰로그 2022. 8. 23. 18:16

https://www.acmicpc.net/problem/4673

 

4673번: 셀프 넘버

셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때,

www.acmicpc.net

 

문제생각

제한시간이 1초였지만 연산을 시행할 구간이 적어서 브루트 포스라고 생각하였다. 

 

문제풀이

  1. 1부터 10000까지 모든 숫자를 이용해서 위의 식대로 계산한다.
  2. 이때 결과값에 대응되는 list의 값을 1로 바꾼다.
  3. list에서 0인 인덱스를 출력한다.
n_list=[0]*10000001
s, t=0, 10
for num in range(1, 10001):
    s+=num
    while(num!=0):
        s+=(num%t)
        num//=t

    
    n_list[s], s=1, 0

for i in range(1, 10001):
    if(n_list[i]==0):
        print(i)

내 풀이는 딱 봐도 메모리도 엄청 잡아먹고 뭔가 코드가 예쁘지가 않다...

문제를 푸는 것도 좋지만 위의 부분도 생각하면서 코드를 작성해보자

 

'코딩테스트 > 백준' 카테고리의 다른 글

백준-19637(파이썬)  (0) 2022.09.30
백준-2108(파이썬)  (0) 2022.08.29
백준-7568(파이썬)  (0) 2022.08.29
백준-1316(파이썬)  (0) 2022.08.23
백준-1978(파이썬)  (0) 2022.08.23
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함