728x90
[백준알고리즘] 2331번: 반복수열 -Python
https://www.acmicpc.net/problem/2331
처음 짠 코드와 다른 분들의 코드를 보고 수정한 코드를 다 가져왔다. 다른 분들의 코드를 보니 딱히 도움이 되지 않는 작업들을 한 것 같다.
우선은 참고했던 반례는 아래와 같다.
in: 153 3
out: 0
in: 58 2
out: 0
in: 9999 5
out: 3
처음에 짰을 때에는 순열의 다음 값을 가리키기 위해서 리스트 link에 다음 값에 대한 정보를 추가했었다. 그리고 link에 포함되었던 값이 나오게 되면 사이클이 형성된 것이기 때문에 중복된 값의 인덱스 앞까지 잘랐다.
import sys
a, p = map(int, sys.stdin.readline().split())
seq = [a]
link = [0]*250000
link[a] = 1
while True:
t = seq[-1]
val = 0
while t:
val += ((t%10) ** p)
t //= 10
if not link[val]:
seq.append(val)
link[val] = 1
else:
seq = seq[:seq.index(val)]
break
sys.stdout.write(str(len(seq)))
위의 내용을 더 간단하게 확인한 것이다. 실제로 다음에 연결되어있는 값의 정보는 필요하지 않기 때문에 굳이 리스트를 하나 더 사용할 필요가 없었다.
import sys
a, p = map(int, sys.stdin.readline().split())
seq = [a]
while True:
t = seq[-1]
val = 0
while t:
val += ((t%10) ** p)
t //= 10
if val in seq:
sys.stdout.write(str(seq.index(val)))
break
else:
seq.append(val)
잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다
728x90
'algorithm > 백준알고리즘' 카테고리의 다른 글
[백준알고리즘] 2667번: 단지번호붙이기 -Python (0) | 2020.02.24 |
---|---|
[백준알고리즘] 9466번: 텀 프로젝트 -Python (5) | 2020.02.24 |
[백준알고리즘] 10451번: 순열 사이클 -Python (0) | 2020.02.23 |
[백준알고리즘] 1707번: 이분 그래프 -Python (0) | 2020.02.23 |
[백준알고리즘] 11724번: 연결 요소의 개수 -Python (0) | 2020.02.23 |