https://www.acmicpc.net/problem/12933
12933๋ฒ: ์ค๋ฆฌ
์ฒซ์งธ ์ค์ ์์ ์ด๊ฐ ๋ น์ํ ์๋ฆฌ๊ฐ ์ฃผ์ด์ง๋ค. ์๋ฆฌ์ ๊ธธ์ด๋ 5๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 2500๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๊ณ , 'q','u','a','c','k'๋ก๋ง ์ด๋ฃจ์ด์ ธ ์๋ค.
www.acmicpc.net

๋ก์ง์ ์ด๋ฌํจ..
์ด๋๊น์ง๋ง ํด๋ ์ฌ์ด ๋ฌธ์ ์ธ ์ค ์์์ง..
์ฒซ ์๋ (์คํจ)
sound๋ฅผ ์ฐจ๋ก๋๋ก ์ํํ๋ฉด์
q -> u -> a -> c -> k ์ ํด๋นํ๋ฉด ๋์ด๊ฐ๊ณ , ํด๋นํ์ง ์์ผ๋ฉด temp ๋ฐฐ์ด์ ๋ฌธ์๋ฅผ ๋ฃ๋๋ค.
์ํ๊ฐ ๋๋ ํ sound์ temp๊ฐ ๊ฐ๋ค๋ฉด (q-u-a-c-k๋ฅผ ์ฐพ์ง ๋ชปํ ๊ฒฝ์ฐ) breakํด์ฃผ๊ณ ,
๊ฐ์ง ์๋ค๋ฉด sound = temp ํ ์ ๋ต์ ํ๋์ฉ ์ถ๊ฐํ๋ค.
sound = input()
duck = ['q', 'u', 'a', 'c', 'k']
answer = 0
while sound:
temp = []
pos = 0
for s in sound:
if s == duck[pos]:
pos += 1
if pos > 4:
pos = 0
else:
temp.append(s)
if sound == temp:
answer = -1
break
sound = temp
answer += 1
print(answer)
๋ฐ๋ก) quackq -> -1 ์ถ๋ ฅ (๋ด ์ฝ๋๋ 1 ์ถ๋ ฅ)
๋ ๋ฒ์งธ / ์ธ ๋ฒ์งธ ์๋ (์๊ฐ ์ด๊ณผ)
sound์ ๊ธธ์ด๊ฐ 5์ ๋ฐฐ์๊ฐ ์๋ ๊ฒฝ์ฐ break๋ฌธ์ ๊ฑธ์ด์ฃผ๋ ๊ฑธ๋ก ์์ ํ๋ค.
๋๋จธ์ง๋ ์๋ ๋์ผ
sound = input()
duck = ['q', 'u', 'a', 'c', 'k']
answer = 0
while sound:
if len(sound) % 5 != 0:
answer = -1
break
temp = []
pos = 0
for s in sound:
if s == duck[pos]:
pos += 1
if pos > 4:
pos = 0
else:
temp.append(s)
sound = temp
answer += 1
print(answer)
๊ฑฐ์ ๋๊น์ง ์ฑ์ ํ๊ธธ๋ ํต๊ณผ๋๋ ์ค ์์์ผ๋ 95%์์ ์๊ฐ ์ด๊ณผํจ..
์๊ฐ ์กฐ๊ธ์ด๋ผ๋ ์ค์ฌ๋ณด๊ฒ ๋ค๊ณ
len(sound)๋ฅผ ๋งค ๋ฐ๋ณต๋ฌธ๋ง๋ค ํธ์ถํ์ง ์๊ณ ,
size = len(sound) ๋ณ์๋ฅผ ์ ์ธํด์ฃผ๊ณ s == duck[pos]์ผ ๋ size ํ๋์ฉ ๊ฐ์์ํค๋๋ก ์์ ํ๋๋ฐ
๋๊ฐ์ด 95%์์ ์๊ฐ ์ด๊ณผํ๋ค.
๋ค ๋ฒ์งธ ์๋ (์ฑ๊ณต)
visited ๋ฐฐ์ด์ ์ ์ธํ๊ณ (False), q - u - a - c - k ์์๋๋ก ๋ง๋ ๋๋ง๋ค True๋ก ๋ฐ๊ฟ์คฌ๋ค.
๋งค ๋ฐ๋ณต๋ฌธ๋ง๋ค visited=True์ด๋ฉด ๋น๊ตํ์ง ์๊ณ ๋์ด๊ฐ๋๋ก ํ๋ค.
total, cnt ๋ณ์๋ฅผ ์ ์ธํด์ฃผ๊ณ
cnt - ๊ฐ ๋ฐ๋ณต๋ฌธ์์ ๋ฐฉ๋ฌธํ ๋ฌธ์์ด์ ๊ฐ์
total - ๋ชจ๋ ๋ฐ๋ณต๋ฌธ์์ ๋ฐฉ๋ฌธํ ๋ฌธ์์ด์ ๊ฐ์์ ์ดํฉ
while๋ฌธ ์กฐ๊ฑด์ total < len(sound)๋ก ์ก์์ฃผ๊ณ
(๋ชจ๋ ๋ฌธ์์ด์ ๋ค ์๋ฅด๋ฉด ์ข ๋ฃ)
cnt๊ฐ 5์ ๋ฐฐ์๊ฐ ์๋๊ฑฐ๋(quack ์ค๊ฐ์์ ์๋ฆฐ ๊ฒฝ์ฐ), 0์ผ ๋(์๋ฅธ ๋ฌธ์์ด์ด ์๋ ๊ฒฝ์ฐ)
break๋ฌธ์ ๊ฑธ์ด์คฌ๋ค.
sound = input()
duck = ['q', 'u', 'a', 'c', 'k']
visited = [False] * len(sound)
total = 0
answer = 0
while total < len(sound):
temp = []
cnt = 0
pos = 0
for i in range(len(sound)):
if visited[i]:
continue
if sound[i] != duck[pos]:
continue
visited[i] = True
cnt += 1
total += 1
pos += 1
if pos > 4:
pos = 0
if cnt % 5 != 0 or cnt == 0:
answer = -1
break
answer += 1
print(answer)
๋๋์ด... ํต๊ณผํ๋ค..
์ง์ง ํ๋ค๊ฐ ํง๋ณ ๋ ๋ป ใ ใ ใ

'๐ค > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค 21921: ๋ธ๋ก๊ทธ (Python) (0) | 2023.06.15 |
---|---|
๋ฐฑ์ค 16918: ๋ด๋ฒ๋งจ (Python) (0) | 2023.05.02 |
๋ฐฑ์ค 1766: ๋ฌธ์ ์ง (Python) (0) | 2022.08.05 |
๋ฐฑ์ค 2252: ์ค ์ธ์ฐ๊ธฐ (Python) (0) | 2022.08.05 |
๋ฐฑ์ค 2887: ํ์ฑ ํฐ๋ (Python) (0) | 2022.08.04 |