문제
풀이 (Python)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def self_num(x):
a = int(x)
if a > 10000:
return
else:
for j in range(len(x)):
a += int(x[j])
if a > 10000:
return
check[a] = True
self_num(str(a))
check = [False]*10001
for i in range(1, 10000):
self_num(str(i))
for i in range(1, 10000):
if check[i] ==False:
print(i)
1 ~ 11 : 셀프 넘버가 아니면 해당하는 값의 check 인덱스에 True 값을 주는 함수이다.
3 ~ 4 : 10000보다 작거나 같은 수를 구하기 때문에 10000보다 크면 return 한다.
6 ~ 9 : d(n)을 구하는 식이며 10000보다 크면 필요 없기 때문에 return한다.
10 : 생성자가 있기 때문에 check의 a 인덱스에 True를 준다.
11 : d(d(n))을 만들기 위해 재귀 함수를 사용한다.
문제 출처
'프로그래밍 > Baekjoon' 카테고리의 다른 글
(파이썬) 백준 알고리즘 10809번 알파벳 찾기 (0) | 2019.01.26 |
---|---|
(파이썬) 백준 알고리즘 2839번 설탕 배달 (0) | 2019.01.23 |
(파이썬) 백준 알고리즘 11654번 아스키 코드 (0) | 2019.01.14 |
(파이썬) 백준 알고리즘 10039번 평균 점수 (0) | 2019.01.10 |
(파이썬) 백준 알고리즘 2178번 미로 탐색 (0) | 2019.01.09 |