CodingTest/Baekjoon

[baekjoon] 백준 12933번(파이썬): 오리

JunJangE 2022. 8. 25. 11:21

문제

 

12933번: 오리

첫째 줄에 영선이가 녹음한 소리가 주어진다. 소리의 길이는 5보다 크거나 같고, 2500보다 작거나 같은 자연수이고, 'q','u','a','c','k'로만 이루어져 있다.

www.acmicpc.net

알고리즘

- 반복문을 통해 오리의 울음소리를 확인한다.

- 확인은 그 울음의 탐색 유무에 따라 진행한다.

- 울음소리가 quack이고 탐색하지 않았다면 카운트한다.

코드

import sys


def solve(start):
    global cnt
    quack = 'quack'
    j = 0
    first = True

    # 반복문을 통해 탐색 시작 지점부터 울음소리의 끝 지점까지 울음소리 확인
    for i in range(start, len(duck)):

        # 울음 소리가 quack이고 탐색하지 않았다면
        if duck[i] == quack[j] and not visited[i]:
            visited[i] = True
            if duck[i] == 'k':
                if first:
                    cnt += 1
                    first = False
                j = 0
                continue
            j += 1


duck = list(map(str, sys.stdin.readline().rstrip("\n")))
visited = [False] * len(duck)
cnt = 0
if len(duck) % 5 != 0:
    print(-1)
    exit()


# 반복문을 통해 오리의 울음소리를 확인
for i in range(len(duck)):
    # 울음소리에 시작이 q이고 탐색하지 않은 자리라면
    if duck[i] == 'q' and not visited[i]:
        solve(i)

if not all(visited) or cnt == 0:
    print(-1)
else:
    print(cnt)

github

 

GitHub - junjange/CodingTest: 내가 푼 코딩 테스트 문제와 해결법(Python)

내가 푼 코딩 테스트 문제와 해결법(Python). Contribute to junjange/CodingTest development by creating an account on GitHub.

github.com