https://www.acmicpc.net/problem/2331
2331번: 반복수열
첫째 줄에 반복되는 부분을 제외했을 때, 수열에 남게 되는 수들의 개수를 출력한다.
www.acmicpc.net
<문제>
<풀이>
1. 수열을 만드는 반복문을 만든다.
2. 도중에 기존에 있는 원소와 같은 원소가 나오면 반복문을 종료한다.
3. 처음으로 나온 같은 원소의 인덱스를 출력한다. (인덱스는 0부터 시작이기에 더하고 뺄 필요가 없다.)
너무 간단하게 풀렸는데 시간복잡도가 별로 좋아보이진 않는다. 더 좋은 방법이 있을듯 싶다.
<코드>
a, p = map(int, input().split())
seq = [a]
while True:
element = 0
for i in str(seq[-1]):
element += (int(i) ** p)
if element in seq:
break
seq.append(element)
print(seq.index(element))
'Problem Solving > Python' 카테고리의 다른 글
[백준]BOJ 7576 - 토마토 - Python/BFS (0) | 2022.11.10 |
---|---|
[백준]BOJ 1697 - 숨바꼭질 - Python/BFS (0) | 2022.11.07 |
[백준]BOJ 2667 - 단지 번호 붙이기 - Python (0) | 2022.11.07 |
[백준]BOJ 10451 - 순열 사이클 - Python (1) | 2022.11.06 |
[백준]BOJ 2178 - 미로 탐색 - Python/BFS (0) | 2022.11.06 |
댓글