DHistory
[Baekjoon] 구현 - 12933 오리 본문
문제
https://www.acmicpc.net/problem/12933
풀이
한 마리의 오리가 여러 번 소리를 낼 수 있습니다.
녹음 중에서 여러 번 소리를 낸 오리를 찾아야합니다.
단, 녹음이 올바르지 않은 경우도 있습니다.
1) q 로 시작하지 않는 경우
2) k 로 끝나지 않는 경우
3) 5의 배수가 아닌 경우
이 경우를 제외하고는 녹음이 제대로 되었습니다.
방문하지 않은 문자열을 순차적으로 방문하여 울음 소리(quack)를 찾습니다.
예시
녹음: quqaquuacakcqckkuaquckqauckack
오리 1: ____q_u__a___ck_______________
오리 2: __q__u_ac_k_q___ua__ckq_u__ack
오리 3: qu_a_______c___k__qu___a_ck___
코드
import sys
text = sys.stdin.readline().rstrip()
quack = 'quack'
def solution(text: str):
# 예외 처리 (ex. qquack)
if text[0] != "q" or text[-1] != "k" or len(text) % 5:
return -1
visited = [False] * len(text)
result = 0
for _ in range(len(text)):
queue = []
index = 0
for i, v in enumerate(text):
if visited[i]:
continue
if not queue and v == "q":
queue.append(v)
visited[i] = True
elif queue and queue[-1] == quack[index % 5] and v == quack[(index + 1) % 5]:
queue.append(v)
visited[i] = True
index += 1
if len(queue) and len(queue) % 5 == 0:
result += 1
return result if result and all(visited) else -1
print(solution(text))
'Computer Science > Algorithm' 카테고리의 다른 글
[Baekjoon] DFS - 24481 알고리즘 수업 - 깊이 우선 탐색 3 (0) | 2024.09.06 |
---|---|
[Baekjoon] DP - 1793 타일링 (1) | 2024.09.02 |
[Baekjoon] DP - 9658 돌 게임 4 (오답노트) (2) | 2024.09.02 |
[Baekjoon] BF - 1254 팰린드롬 만들기 (0) | 2024.08.29 |
[Baekjoon] BFS - 17086 아기상어 2 (오답노트) (0) | 2024.08.29 |