[Python] 알고리즘/Silver
[1544] 사이클 단어 (Python)
-Becca-
2021. 12. 22. 11:39
[문제]
https://www.acmicpc.net/problem/1544
1544번: 사이클 단어
사이클 단어는 어떤 단어를 원형 모양으로 차례대로 쓴 것이다. 따라서, 어떤 단어를 이렇게 쓴 후에 임의의 단어를 고른다. 그 후에 시계방향으로 차례대로 읽으면 그 것이 단어가 된다. 만약에
www.acmicpc.net
알고리즘 분류는 구현, 자료 구조, 문자열, 브루트포스 알고리즘, 해시를 이용한 집합과 맵 입니다.
deque를 사용하여 한 문자를 뒤로 보내며 검사하였습니다.
[코드]
import sys
from collections import deque
N = int(sys.stdin.readline())
w_li = list()
for i in range(N):
w_li.append(sys.stdin.readline().rstrip())
for i in range(N):
dq = deque(w_li[i])
while True:
dq.append(dq.popleft())
save = "".join(dq)
if save == w_li[i]:
break
if save in w_li:
idx = w_li.index(save)
w_li.pop(idx)
w_li.insert(idx, w_li[i])
w_li = set(w_li)
print(len(w_li))