python/백준 - 1544번 문제에 대한 분석임.
from collections import deque
def rotate_word(w1, w2):
if len(w1)!=len(w2): return w2
w2 = deque(w2)
for _ in range(len(w2)):
w2.rotate(1)
t = ''.join(w2)
if w1==t: return t
return ''.join(w2)
n = int(input())
l = [input() for _ in range(n)]
for i in range(n):
for j in range(i,n):
if l[i]!=l[j]:
l[j] = rotate_word(l[i], l[j])
print(len(set(l)))
def rotate_word(w1, w2):
if len(w1)!=len(w2): return w2
w2 = deque(w2)
for _ in range(len(w2)):
w2.rotate(1)
t = ''.join(w2)
if w1==t: return t
return ''.join(w2)
w1, w2)를 입력 받아서 w2를 회전시켜 w1과 똑같이 만들 수 있다면 회전시켜 w1과 똑같이 만든 후 해당 단어 반환해주는 함수w1, w2의 길이가 다를 경우 서로 다른 단어기 때문에 그대로 w2를 반환w2를 반환n = int(input())
l = [input() for _ in range(n)]
for i in range(n):
for j in range(i,n):
if l[i]!=l[j]:
l[j] = rotate_word(l[i], l[j])
print(len(set(l)))