-
๐ ๋ฌธ์
๋ค์์ ๋๋ ๋๋ผ์์ ์ฌ์ฉํ๋ ์ฌ๋ฐ๋ฅธ ๋จ์ด์ ๋ํ ์ค๋ช ์ด๋ค.
์์์ ์์ ์ ์ n์ ๋ํด์, 'w'๊ฐ n๋ฒ ๋์ค๊ณ , ๊ทธ ๋ค์์ 'o'๊ฐ n๋ฒ, ๊ทธ ๋ค์์ 'l'์ด n๋ฒ, ๊ทธ ๋ค์์ 'f'๊ฐ n๋ฒ ๋์จ ๋จ์ด๋ ์ฌ๋ฐ๋ฅธ ๋จ์ด์ด๋ค.
์ฌ๋ฐ๋ฅธ ๋จ์ด ๋ ๊ฐ๋ฅผ ์ด์ ๋จ์ด๋ ์ฌ๋ฐ๋ฅธ ๋จ์ด์ด๋ค.
1๋ฒ๊ณผ 2๋ฒ ์กฐ๊ฑด์ผ๋ก ๋ง๋ค ์ ์๋ ๋จ์ด๋ง ์ฌ๋ฐ๋ฅธ ๋จ์ด์ด๋ค.
๋ค์์ ์ฌ๋ฐ๋ฅธ ๋จ์ด์ ์์์ด๋ค.1๋ฒ ๊ท์น์ผ๋ก ๋ง๋ "wolf", "wwoollff", "wwwooolllfff"๋ ๋ชจ๋ ์ฌ๋ฐ๋ฅธ ๋จ์ด์ด๋ค.
2๋ฒ ๊ท์น์ผ๋ก ๋ง๋ "wolfwwoollff"์ ์ฌ๋ฐ๋ฅธ ๋จ์ด์ด๋ค.
2๋ฒ ๊ท์น์ ๋ ๋ฒ ์จ์ ๋ง๋ "wolfwwoollffwolf"์ ์ฌ๋ฐ๋ฅธ ๋จ์ด์ด๋ค.
"wfol"์ ์ฌ๋ฐ๋ฅธ ๋จ์ด๊ฐ ์๋๋ค. (์์๊ฐ ์ฌ๋ฐ๋ฅด์ง ์์)
"wwolfolf"๋ ์ฌ๋ฐ๋ฅธ ๋จ์ด๊ฐ ์๋๋ค. (๋ฌธ์์ด์ ์ค๊ฐ์ ๋ค๋ฅธ ๋ฌธ์์ด์ ์ง์ด ๋ฃ์)
"wwwoolllfff"๋ ์ฌ๋ฐ๋ฅธ ๋จ์ด๊ฐ ์๋๋ค. (o๊ฐ 2๋ฒ ๋ค์ด๊ฐ๋ค)์ ๋ ฅ
์ฒซ์งธ ์ค์ ๋จ์ด๊ฐ ์ฃผ์ด์ง๋ค. ๋จ์ด๋ w, o, l, f๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ, ๊ธธ์ด๋ 50์ ๋์ง ์๋๋ค.
์ถ๋ ฅ
์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง ๋จ์ด๊ฐ ์ฌ๋ฐ๋ฅธ ๋จ์ด์ธ ๊ฒฝ์ฐ์๋ 1์, ์๋๋ฉด 0์ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1
wolf
์์ ์ถ๋ ฅ 1
1
์์ ์ ๋ ฅ 2
wwolfolf
์์ ์ถ๋ ฅ 2
0
๐ ํ์ด
๐ฌ Code
import sys input = sys.stdin.readline def check(seq, dic): if ''.join(seq) == 'wolf' and dic['w'] == dic['o'] == dic['l'] == dic['f']: seq = [] dic = dict(w=0, o=0, l=0, f=0) else: print(0) sys.exit(0) return seq, dic word = list(input().rstrip()) if len(word) < 4: print(0) sys.exit(0) # wolf ์์ ์ฒดํฌ๋ฅผ ์ํ seq former = word[0] seq = [former] # wolf ๊ฐ์ ์ฒดํฌ๋ฅผ ์ํ dic dic = dict(w=0, o=0, l=0, f=0) dic[former] = 1 for i in range(1, len(word)): dic[word[i]] += 1 if word[i] != former: if former == 'f': seq, dic = check(seq, dic) seq.append(word[i]) former = word[i] if i == len(word) - 1: seq, dic = check(seq, dic) print(1)
๐ก Solution
๋จ์ด๊ฐ wolf ์์๋๋ก ์ด๋ฃจ์ด์ ธ ์๋์ง → seq ๋ฆฌ์คํธ๋ก ์ฒดํฌ
๋จ์ด์ ๊ฐ ๋ฌธ์๊ฐ ๊ฐ์ ํ์(n๋ฒ)๋ก ๋ฑ์ฅํ๋์ง → dic ๋ฆฌ์คํธ๋ก ์ฒดํฌ์ด ๋ ๊ฐ์ง๋ฅผ ์ฒดํฌํด์ ๋ ๋ค ๋ง์กฑํ๋ฉด 1์ ์ถ๋ ฅํ๋ฉด ๋๋ ๋ฌธ์ ์ ๋๋ค. ์ด์ ์ฝ๋๋ฅผ ํ๋ํ๋ ๋ฏ์ด๋ณด๋ฉด
word = list(input().rstrip()) if len(word) < 4: print(0) sys.exit(0)
๋จ์ด๊ฐ 4๊ธ์ ์ดํ๋ฉด wolf๋ฅผ ์์ฑ์ํฌ ์ ์๊ธฐ ๋๋ฌธ์ 0์ ์ถ๋ ฅํ๊ณ ํ๋ก๊ทธ๋จ์ ์ข ๋ฃ์ํต๋๋ค. ์ด ์์ธ์ฒ๋ฆฌ๋ฅผ ์ํด์คฌ๋๋ ์๊พธ 99%๊น์ง ๊ฐ๋ค๊ฐ ์ค๋ตํ์ ์ ๋ฐ์์ ํค๋งธ์ต๋๋ค ใ ใ
# wolf ์์ ์ฒดํฌ๋ฅผ ์ํ seq former = word[0] seq = [former] # wolf ๊ฐ์ ์ฒดํฌ๋ฅผ ์ํ dic dic = dict(w=0, o=0, l=0, f=0) dic[former] = 1
- ๋ค๋ฅธ ๋ฌธ์๊ฐ ๋์ฌ ๋๋ง๋ค seq์ ์ถ๊ฐ
๊ทธ๋ฌ๋ ค๋ฉด ์ด์ ๋ฌธ์๊ฐ ๋ญ์ง ์์์ผ ํ๋ฏ๋ก former์ ์ด์ ๋ฌธ์๋ฅผ ์ ์ฅ - w, o, l, f์ ๊ฐ์๋ฅผ ์ฒดํฌํ๊ธฐ ์ํ ๋์ ๋๋ฆฌ dic ์์ฑ
for i in range(1, len(word)): dic[word[i]] += 1 if word[i] != former: if former == 'f': seq, dic = check(seq, dic) seq.append(word[i]) former = word[i] if i == len(word) - 1: seq, dic = check(seq, dic)
- ํด๋น ๋ฌธ์ ๊ฐ์ +1
- ์ด์ ๋ฌธ์์ ๋ค๋ฅธ ๋ฌธ์๊ฐ ๋์ค๋ฉด seq์ ์ถ๊ฐํ๊ณ , former ์ ๋ฐ์ดํธ
- ์ด์ ๋ฌธ์์ ๋ค๋ฅธ ๋ฌธ์๊ฐ ๋์๋๋ฐ ์ด์ ๋ฌธ์๊ฐ f์๋ค๋ฉด wolf ํ์ธํธ๊ฐ ๋๋ฌ์ ๊ฒ์ด๋ฏ๋ก check(wolf์ ์์์ ๊ฐ์๋ฅผ ์ฒดํฌํ๋ ํจ์) ์คํ
- ๋ง์ง๋ง ๋ฌธ์๋ผ๋ฉด check ์คํ
def check(seq, dic): if ''.join(seq) == 'wolf' and dic['w'] == dic['o'] == dic['l'] == dic['f']: seq = [] dic = dict(w=0, o=0, l=0, f=0) else: print(0) sys.exit(0) return seq, dic
- seq๋ฅผ ๋ฌธ์์ด๋ก ๋ง๋ค์ด์ wolf์ ๋์ผํ์ง, w, o, l, f์ ๊ฐ์๊ฐ ๋ชจ๋ ๋์ผํ์ง ์ด ๋ ๊ฐ๋ฅผ ๋ชจ๋ ๋ง์กฑํ๋ค๋ฉด seq์ dic์ ๋น์์ฃผ๊ณ ๋ค์ ๋ฌธ์ ํ์ํ๋ฌ~
- ๋ง์กฑํ์ง ๋ชปํ๋ค๋ฉด 0์ ์ถ๋ ฅํ๊ณ ํ๋ก๊ทธ๋จ ์ข ๋ฃ!
'๐ป Algorithm > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python] ๋ฐฑ์ค 11000 ๊ฐ์์ค ๋ฐฐ์ (Heapq) (0) 2022.07.08 [Python] ๋ฐฑ์ค 3107 IPv6 (String) (0) 2022.07.08 [Python] ๋ฐฑ์ค 7576 ํ ๋งํ (BFS) (0) 2022.07.08 [Python] ๋ฐฑ์ค 16719 ZOAC (๊ตฌํ) (0) 2022.07.08 [Python] ๋ฐฑ์ค 1541 ์์ด๋ฒ๋ฆฐ ๊ดํธ (Greedy) (0) 2022.07.08 - ๋ค๋ฅธ ๋ฌธ์๊ฐ ๋์ฌ ๋๋ง๋ค seq์ ์ถ๊ฐ