๐Ÿ“š Study/Baekjoon

[Silver II] 12933 - ์˜ค๋ฆฌ

์œฐ๊ฐฑ 2025. 5. 4. 20:38

๋ฌธ์ œ

์˜ค๋ฆฌ์˜ ์šธ์Œ ์†Œ๋ฆฌ๋Š” "quack"์ด๋‹ค. ์˜ฌ๋ฐ”๋ฅธ ์˜ค๋ฆฌ์˜ ์šธ์Œ ์†Œ๋ฆฌ๋Š” ์šธ์Œ ์†Œ๋ฆฌ๋ฅผ ํ•œ ๋ฒˆ ๋˜๋Š” ๊ทธ ์ด์ƒ ์—ฐ์†ํ•ด์„œ ๋‚ด๋Š” ๊ฒƒ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, "quack", "quackquackquackquack", "quackquack"๋Š” ์˜ฌ๋ฐ”๋ฅธ ์˜ค๋ฆฌ์˜ ์šธ์Œ ์†Œ๋ฆฌ์ด๋‹ค.

์˜์„ ์ด์˜ ๋ฐฉ์—๋Š” ์˜ค๋ฆฌ๊ฐ€ ์žˆ๋Š”๋ฐ, ๋ฌธ์ œ๋ฅผ ๋„ˆ๋ฌด ์—ด์‹ฌํžˆ ํ’€๋‹ค๊ฐ€ ๋ช‡ ๋งˆ๋ฆฌ์˜ ์˜ค๋ฆฌ๊ฐ€ ์žˆ๋Š”์ง€ ๊นŒ๋จน์—ˆ๋‹ค.

๊ฐ‘์ž๊ธฐ ์˜์„ ์ด์˜ ๋ฐฉ์— ์žˆ๋Š” ์˜ค๋ฆฌ๊ฐ€ ์šธ๊ธฐ ์‹œ์ž‘ํ–ˆ๊ณ , ์ด ์šธ์Œ์†Œ๋ฆฌ๋Š” ์„ž์ด๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. ์˜์„ ์ด๋Š” ์ผ๋‹จ ์šธ์Œ์†Œ๋ฆฌ๋ฅผ ๋…น์Œํ–ˆ๊ณ , ๋‚˜์ค‘์— ๋“ค์–ด๋ณด๋ฉด์„œ ์ด ๋ช‡ ๋งˆ๋ฆฌ์˜ ์˜ค๋ฆฌ๊ฐ€ ์žˆ๋Š”์ง€ ๊ตฌํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

๋…น์Œํ•œ ์†Œ๋ฆฌ๋Š” ๋ฌธ์ž์—ด๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋Š”๋ฐ, ํ•œ ๋ฌธ์ž๋Š” ํ•œ ์˜ค๋ฆฌ๊ฐ€ ๋‚ธ ์†Œ๋ฆฌ์ด๋‹ค. ์˜ค๋ฆฌ์˜ ์šธ์Œ ์†Œ๋ฆฌ๋Š” ์—ฐ์†๋  ํ•„์š”๋Š” ์—†์ง€๋งŒ, ์ˆœ์„œ๋Š” "quack"์ด์–ด์•ผ ํ•œ๋‹ค. "quqacukqauackck"๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ๋‘ ์˜ค๋ฆฌ๊ฐ€ ์šธ์—ˆ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์˜์„ ์ด๊ฐ€ ๋…น์Œํ•œ ์†Œ๋ฆฌ๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์˜์„ ์ด ๋ฐฉ์— ์žˆ์„ ์ˆ˜ ์žˆ๋Š” ์˜ค๋ฆฌ์˜ ์ตœ์†Œ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์˜์„ ์ด๊ฐ€ ๋…น์Œํ•œ ์†Œ๋ฆฌ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์†Œ๋ฆฌ์˜ ๊ธธ์ด๋Š” 5๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 2500๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๊ณ , 'q','u','a','c','k'๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

์ถœ๋ ฅ

์˜์„ ์ด ๋ฐฉ์— ์žˆ์„ ์ˆ˜ ์žˆ๋Š” ์˜ค๋ฆฌ์˜ ์ตœ์†Œ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ๋…น์Œํ•œ ์†Œ๋ฆฌ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋Š” -1์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

์˜ˆ์ œ ์ž…๋ ฅ 1 ๋ณต์‚ฌ

quqacukqauackck

์˜ˆ์ œ ์ถœ๋ ฅ 1 ๋ณต์‚ฌ

2

์˜ˆ์ œ ์ž…๋ ฅ 2 ๋ณต์‚ฌ

kcauq

์˜ˆ์ œ ์ถœ๋ ฅ 2 ๋ณต์‚ฌ

-1

์˜ˆ์ œ ์ž…๋ ฅ 3 ๋ณต์‚ฌ

quackquackquackquackquackquackquackquackquackquack

์˜ˆ์ œ ์ถœ๋ ฅ 3 ๋ณต์‚ฌ

1

์˜ˆ์ œ ์ž…๋ ฅ 4 ๋ณต์‚ฌ

qqqqqqqqqquuuuuuuuuuaaaaaaaaaacccccccccckkkkkkkkkk

์˜ˆ์ œ ์ถœ๋ ฅ 4 ๋ณต์‚ฌ

10

์˜ˆ์ œ ์ž…๋ ฅ 5 ๋ณต์‚ฌ

quqaquuacakcqckkuaquckqauckack

์˜ˆ์ œ ์ถœ๋ ฅ 5 ๋ณต์‚ฌ

3

์˜ˆ์ œ ์ž…๋ ฅ 6 ๋ณต์‚ฌ

quackqauckquack

์˜ˆ์ œ ์ถœ๋ ฅ 6 ๋ณต์‚ฌ

-1

# ํ’€์ด ๋ฐฉ๋ฒ•

duck_crying ๋ฆฌ์ŠคํŠธ๋ฅผ ๋Œ๋ฉด์„œ ๋ฐ”๋กœ๋ฐ”๋กœ ์ฒดํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

quack = "quack'์ด๋ผ๊ณ  ์ •์˜ํ•˜๊ณ 

ongoing ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค์–ด ํ•˜๋‚˜์”ฉ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

 

์ด๋ ‡๊ฒŒ ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ์—ˆ์ง€๋งŒ ์•„์ด๋””์–ด๊ฐ€ ๋– ์˜ค๋ฅด์ง€ ์•Š์•„ ๋‹ค๋ฅธ ํ’€์ด๋กœ ์ ‘๊ทผํ–ˆ๋˜๊ฑด๋ฐ

์ž˜ ๊ธฐ์–ตํ•ด๋†”์•ผ๊ฒ ๋‹ค.


# ์ฝ”๋“œ

import sys
sys.stdin = open("input.txt","r")

duck_crying = list(sys.stdin.readline().strip())

# ์˜ฌ๋ฐ”๋ฅธ ์šธ์Œ ์ˆœ์„œ
quack = "quack"
ongoing = []  # ์ง„ํ–‰ ์ค‘์ธ quack ์ƒํƒœ๋“ค

for ch in duck_crying:
    placed = False
    for i in range(len(ongoing)):
        idx = ongoing[i]
        if ch == quack[(idx + 1) % 5]:  # ๋‹ค์Œ ๋ฌธ์ž์™€ ์ผ์น˜ํ•˜๋ฉด
            ongoing[i] = (idx + 1) % 5
            placed = True
            break
    if not placed:
        if ch == 'q':
            ongoing.append(0)
        else:
            print(-1)
            sys.exit()
    print(ongoing)

# ๋ชจ๋“  ์šธ์Œ์€ "k"์—์„œ ๋๋‚˜์•ผ ํ•จ (quack์˜ ๋งˆ์ง€๋ง‰ ๋ฌธ์ž)
if all(x == 4 for x in ongoing):
    print(len(ongoing))
else:
    print(-1)

# ์ฐธ๊ณ 

์ฒซ ์‹œ๋„.. ํ‹€๋ฆฐ ์ฝ”๋“œ๋ผ๊ณ  ํ•˜๋Š”๋ฐ ์ด์œ ๋ฅผ ๋ชจ๋ฅด๊ฒ ์Œ ์ž…๋ ฅ ์˜ˆ์‹œ๊ฐ€ ๋‹ค ๋งž๋Š”๋ฐ

<๋ฐฉ๋ฒ•>

์ผ๋‹จ ์šธ์Œ ์†Œ๋ฆฌ์˜ ์‹œ์ž‘์ธ q์˜ ์œ„์น˜๋ฅผ ์ฐพ๋Š”๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ฐ๊ฐ์˜ ์šธ์Œ ์†Œ๋ฆฌ๋งˆ๋‹ค (์‹œ์ž‘์œ„์น˜=q, ๋ ์œ„์น˜=k)๋ฅผ ์ €์žฅํ•œ๋‹ค.

์ด ์šธ์Œ ์†Œ๋ฆฌ๊ฐ€ ๊ฒน์น˜๋ฉด ์˜ค๋ฆฌ์˜ ์ˆ˜๊ฐ€ ์ฆ๊ฐ€ํ•˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์„ ๊ฒฝ์šฐ์—๋Š” ์ด์ „์˜ ๋™์ผํ•œ ์˜ค๋ฆฌ๋ผ๊ณ  ํŒ๋‹จํ•œ๋‹ค.

# 2025-05-04 18:46-
import sys
sys.stdin = open("input.txt","r")

duck_crying = list(sys.stdin.readline().strip())
position_q = [] # q์˜ ์‹œ์ž‘ ์œ„์น˜์ €์žฅ
quack_list = [] # quack์˜ 

for i in range(len(duck_crying)):
    if duck_crying[i] == 'q':
        position_q.append(i)

for pq in position_q:
    tmp_list = ['q']
    duck_crying[pq] = '*'
    for i in range(pq+1,len(duck_crying)):
        if len(tmp_list) == 1 and duck_crying[i] == 'u':
            duck_crying[i] = '*'
            tmp_list.append('u')
        elif len(tmp_list) == 2 and duck_crying[i] == 'a':
            duck_crying[i] = '*'
            tmp_list.append('a')
        elif len(tmp_list) == 3 and duck_crying[i] == 'c':
            duck_crying[i] = '*'
            tmp_list.append('c')
        elif len(tmp_list) == 4 and duck_crying[i] == 'k':
            duck_crying[i] = '*'
            quack_list.append((pq,i))
            break

if len(quack_list)*len('quack') != len(duck_crying):
    print(-1)
else:
    cnt_duck = 1
    for i in range(1, len(quack_list)):
        pq1, pk1 = quack_list[i-1]
        pq2, pk2 = quack_list[i]

        if not pk1 < pq2:
            cnt_duck += 1
        
            for j in range(i-1,-1,-1):
                pq3, pk3 = quack_list[j]
                if pk3 < pq2:
                    cnt_duck -= 1
                    break

    print(cnt_duck)