0%

BOJ 2331

Input

첫째 줄에 A(1 ≤ A ≤ 9999), P(1 ≤ P ≤ 5)가 주어진다.

1
A, P = map(int, input().split())

DFS

  • 반복되는 수를 찾을 때까지 같은 작업 반복
  • 반복되는 수를 찾았을 경우, 배열에 추가하지 않고 처음에 담겨있는 index를 받아 출력하면 중복되지 않는 수의 개수와 동일하다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
visited = []

def dfs(num):
.
.
.

# 중복되지 않을 경우
visited.append(num)
digit = [int(x) for x in str(num)]
now = 0

for x in digit:
now += x ** P

dfs(now)

Output

첫째 줄에 반복되는 부분을 제외했을 때, 수열에 남게 되는 수들의 개수를 출력한다.

1
2
3
4
if num in visited:
idx = visited.index(num)
print(idx)
return