[Silver II] 12933 - μ€λ¦¬
λ¬Έμ
μ€λ¦¬μ μΈμ μ리λ "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)