๋ฌธ์
์ค๋ฆฌ์ ์ธ์ ์๋ฆฌ๋ "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)
'๐ Study > Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Silver I] 1283 - ๋จ์ถํค ์ง์ (0) | 2025.05.01 |
---|---|
[Gold V] 21608 - ์์ด ์ด๋ฑํ๊ต (1) | 2025.04.30 |
[Gold V] 16926 - ๋ฐฐ์ด ๋๋ฆฌ๊ธฐ1 (0) | 2025.04.27 |
[Gold IV] 1107 - ๋ฆฌ๋ชจ์ปจ (0) | 2025.04.25 |
[Gold IV] 14502 - ์ฐ๊ตฌ์ (0) | 2025.04.25 |