[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))