CodingTest/Python
BOJ_12933 : ์ค๋ฆฌ
Soom_1n
2022. 7. 21. 16:41
12933๋ฒ: ์ค๋ฆฌ
์ฒซ์งธ ์ค์ ์์ ์ด๊ฐ ๋ น์ํ ์๋ฆฌ๊ฐ ์ฃผ์ด์ง๋ค. ์๋ฆฌ์ ๊ธธ์ด๋ 5๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 2500๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๊ณ , 'q','u','a','c','k'๋ก๋ง ์ด๋ฃจ์ด์ ธ ์๋ค.
www.acmicpc.net
๐ธ ๋ฌธ์ ๋ถ์ ๐ธ
- ์ธ์์๋ฆฌ "quack"๋ฅผ ํ์ธํด์ผํ๋๋ฐ, ์ฌ๋ฌ ์ฌ์ดํด์ด ์กด์ฌํ ์ ์๋ค.
- ๋ถ๊ฐ๋ฅํ ์กฐํฉ์ด๋ผ๋ฉด -1์ ์ถ๋ ฅํด์ผ ํ๋ค.
๐ธ ์ฝ๋ ๐ธ
import sys
input = sys.stdin.readline
print = sys.stdout.write
string = input().rstrip()
strs = [] # ์ค๋ฆฌ ๋ณ ์ธ์์๋ฆฌ ์ ์ฅ
answer = 0 # ์ค๋ฆฌ์ ์
done = 0 # ๋๋ ์ธ์ ์๋ฆฌ ์
duck = "quack" # ์ธ์์๋ฆฌ ํ ์ฌ์ดํด
find = 0 # ์ฌ์ดํด์์ ์ฐพ๋ ๋ฌธ์
for c in string:
if c == 'q': find = 4 # ์ด์ ๋ฌธ์๋ฅผ ์ฐพ์์ผํจ
elif c == 'u': find = 0
elif c == 'a': find = 1
elif c == 'c': find = 2
elif c == 'k': find = 3
isin = False # ์ฐ๊ฒฐ๋๋ ์ธ์ ์ฐพ๊ธฐ
for i in range(len(strs)): # ์ธ์ ๊ฒ์ฌ
if strs[i][-1] == duck[find]:
strs[i] += duck[(find+1)%5]
isin = True # ์ฐ๊ฒฐ๋๋ ์ธ์ ์ฐพ์
if find == 3:
done += 1
elif find == 4:
done -= 1
break
if not isin: # ์ฐ๊ฒฐ๋๋ ์ธ์ ๋ชป์ฐพ์
strs.append("q")
answer += 1
if answer == done:
print(str(answer))
else:
print(str(-1))
๐ธ ์ฝ๋ ํด์ ๐ธ
- ์ธ์์๋ฆฌ๋ฅผ ๊ตฌ๋ถํ๋ ๋ฐฉ๋ฒ์ผ๋ก string ๋ฆฌ์คํธ๋ฅผ ์ ํํ๋ค.
- ๋ถ๊ฐ๋ฅํ ์ฌ์ดํด์ ์ค๋ฆฌ์ ์์ ์์ฑ๋ ์ธ์์ ์๋ฅผ ๋น๊ตํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค.
- ์ ๋ ฅ์์ ๋ง์ง๋ง ์ค๋ฐ๊ฟ \n์ ์ ๊ฑฐํด์ค์ผ ํ๋ค.
๐ธ end ๐ธ
- ์ธ์์๋ฆฌ ๊ตฌ๋ถ ๋ฐฉ๋ฒ์ ๋ง์ด ๊ณ ๋ฏผํ๋ค ๋ฆฌ์คํธ๋ฅผ ์ ํํ๋ค.
- ์ค๋ฒ 4์น๊ณ ๋ ์ด๋ ต๊ฒ ํ์ ๊ฒ ๊ฐ์ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ์ ์๊ฐ์ด๋ค.
728x90