728x90
https://www.acmicpc.net/problem/1544
1544번: 사이클 단어
사이클 단어는 어떤 단어를 원형 모양으로 차례대로 쓴 것이다. 따라서, 어떤 단어를 이렇게 쓴 후에 임의의 단어를 고른다. 그 후에 시계방향으로 차례대로 읽으면 그 것이 단어가 된다. 만약에
www.acmicpc.net
22/09/11
그룹 제출 현황에 있는 문제를 아무 문제나 무작위로 한 문제 골라서 풀었다.
문제 접근 방식:
원형으로 쓴다는 아이디어에서 착안하여 덱 자료구조를 떠올렸다.
파이썬의 deque은 rotate라는 메서드가 존재하기 때문에 이 메서드를 활용하면 될 것이라고 생각했다.
구현은 다음과 같이 진행했다.
새로운 단어가 나오면 cycle_word라는 리스트에 그 새로운 단어를 원형으로 써서 읽힐 수 있는 모든 가능한 단어의 리스트를 추가하도록 했다.
새로운 단어를 어떻게 판단하냐면 기존의 cycle_word라는 리스트의 원소 안에 새로운 단어가 존재하면 패스, 아니면 새로운 단어인 것이다.
아래는 내가 위의 접근 방식과 같이 작성한 파이썬 코드이다. 더보기를 누르면 확인할 수 있다.
더보기
# 1544번 사이클 단어
from collections import deque
import sys
input = sys.stdin.readline
N = int(input())
cycle_words = list()
for _ in range(N):
flag = False
word = deque(input().rstrip())
for words in cycle_words:
if ''.join(list(word)) in words:
flag = True
break
if flag:
continue
words = list()
for _ in range(len(word)):
word.rotate(1)
words.append(''.join(list(word)))
cycle_words.append(words)
print(len(cycle_words))
728x90
'알고리즘 > 백준 문제 풀이' 카테고리의 다른 글
[Python] 1927번 최소 힙 / 11279번 최대 힙 / 11286번 절댓값 힙 (0) | 2022.09.26 |
---|---|
[Python] 2491번 수열 (0) | 2022.09.26 |
[Python] 3709번 레이저빔은 어디로 (0) | 2022.09.26 |
[Python] 14607번 피자 (Large) (0) | 2022.09.26 |
[Python] 1246번 온라인 판매 (0) | 2022.09.26 |