728x90
https://www.acmicpc.net/problem/1544
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))
'알고리즘 > 백준 문제 풀이' 카테고리의 다른 글
[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 |