[BOJ] 12933. 오리 (python)

백준 12933. 오리 (파이썬)

 

12933번: 오리

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

www.acmicpc.net

# [BOJ] 12933. 오리  2023-03-09

S = input()

ans = 0
A = []
L = ['0', 'q', 'u', 'a', 'c', 'k']

for i in range(len(S)):
    s = S[i]
    if L.index(s) == 1:
        # q가 나온 경우
        t = 1
        for j in range(len(A)):
            if L.index(A[j][-1]) == 5:
                A[j] += s
                t = 0
                break
        if t == 1:
            A.append(s)
            
    else:
        t = 1
        for j in range(len(A)):
            if L.index(A[j][-1]) + 1 == L.index(s):
                t = 0
                A[j] += s
                break
        if t == 1:
            ans = -1
            break
    

for a in A:
    if a[-1] != 'k':
        ans = -1
        
if ans == -1:
    print(ans)
else:
    print(len(A))

못 풀던 문제 다시 도전해서 성공

q가 등장했을 때와 다른 알파벳이 등장했을 때를 분기

 

q의 경우 -> k로 끝난 값이 있는지 확인하고 없으면 새로 append

q가 아닌 경우 -> 현재 존재하는 값 중에서 이어질 수 있으면 지속, 아니면 바로 break

 

break로 끝나지 않은 경우 완성된 배열 항목의 수가 정답이 된다