본문 바로가기
Algorithm/스택&큐&덱&힙

[Python3] 백준 1544번 사이클 단어

by HANNI하니 2023. 4. 19.

사용 언어 - Python3

문제 - 사이클 단어

 

1544번: 사이클 단어

사이클 단어는 어떤 단어를 원형 모양으로 차례대로 쓴 것이다. 따라서, 어떤 단어를 이렇게 쓴 후에 임의의 단어를 고른다. 그 후에 시계방향으로 차례대로 읽으면 그 것이 단어가 된다. 만약에

www.acmicpc.net

 

정답

큐를 활용한 구현 (정답 맞춘 여부 X)

1. 각 word를 deque로 저장해준다. picture -> p,i,c,t,u,r,e

2. dq.append(dq.popleft())

dq의 맨 왼쪽 값 p를 없애면서 가장 오른쪽에 append한다. i,c,t,u,r,e,p의 형태

각 원소를 합한 save값이 원래 값인 picture까지 한바퀴를 다 돌면 break

save값이 word 리스트 안 다른 원소들에 속해있다면, index를 찾아 값을 없애주고

index 위치에 word[i] 값을 넣어서 다 모든 picture로 만들어버린다.

3. set(word)

동일한 값은 모두 같은 값으로 입력되어 있는 상태

set()을 통해 유일한 값 개수를 세준다.

import sys
from collections import deque

input = sys.stdin.readline
n = int(input())
word = []
for i in range(n):
    word.append(input().rstrip())
    
for i in range(n):
    dq = deque(word[i])
    while True:
        dq.append(dq.popleft())
        save = "".join(dq)
        if save == word[i]:
            break
        if save in word:
            idx = word.index(save)
            word.pop(idx)
            word.insert(idx,word[i])

word = set(word)
print(len(word))

 

 

 


레퍼런스

  • 정답 참고
 

[1544] 사이클 단어 (Python)

[문제] https://www.acmicpc.net/problem/1544 1544번: 사이클 단어 사이클 단어는 어떤 단어를 원형 모양으로 차례대로 쓴 것이다. 따라서, 어떤 단어를 이렇게 쓴 후에 임의의 단어를 고른다. 그 후에 시계

becca-codingdiary.tistory.com

  • 정답 깃허브
 

GitHub - yyeongeun/codingtest: 코딩테스트 공부

코딩테스트 공부. Contribute to yyeongeun/codingtest development by creating an account on GitHub.

github.com

 

댓글