https://www.acmicpc.net/problem/5525
์ค๋๋ง์ ๋ถ๋ถ์ ์๊ฐ ์๋ ๋ฌธ์
์์ด๋์ด
1. ๊ฐ์ฅ ๋จผ์ ๋ ์ค๋ฅธ ๊ฑด ์ฌ๋ผ์ด์ฑ
- ๋จ์ํ๊ฒ ์๊ฐํด์ ๊ทธ๋ฅ Pn ํฌ๊ธฐ๋งํผ ์๋ผ์ ํ์ํ๋ค.
- ์์ด๋์ด๊ฐ ๋๋ฌด ์ฌ์ด๋งํผ ๋ถ๋ถ์ ์ 50์ ๋ง ์คฌ๋ค.
2. ์๊ฐ ์ด๊ณผ๋ฅผ ํผํ๋ ค๋ฉด
- ์ด๋ฒ์ ์๊ฒ ๋๋๋ฐ, ํ์ด์ฌ์์ arr [a:b]์ ์๊ฐ ๋ณต์ก๋๋ O(b - a)๋ผ๊ณ ํ๋ค.
- ์ฌ๋ผ์ด์ค๋ฅผ ์ต๋ํ ๋ ์ฐ๊ณ ๋ฐ๋ณต์ ์ต์ํํ๋ ๋ฐฉ๋ฒ์ ์ฐพ์์ผ ํ๋ค.
์ฝ๋ ์ค๋ช
while cursor < (M - 1):
if S[cursor:cursor + 3] == 'IOI': #3์นธ
count += 1
cursor += 2
if count == N:
result += 1
count -= 1
else:
cursor += 1
count = 0
์ข ๋ณต์กํด ๋ณด์ด์ง๋ง ๋ง๋ก ํ์ด๋ณด๋ฉด ๊ฐ๋จํ๋ค.
์์น๋ฅผ ๋ํ๋ด๋ cursor, OI ๊ฐ์๋ฅผ ๋ํ๋ด๋ count ๋ณ์๋ฅผ ์ฌ์ฉํ๋ค.
๋จผ์ cursor๋ถํฐ cousor + 3๊น์ง 3์นธ์ง๋ฆฌ ๋ฌธ์์ด 'IOI'๊ฐ ๋ง๋์ง ํ์ธํ๋ค.
IOI๊ฐ ์๋๋ผ๋ฉด coursor๋ฅผ ํ ์นธ ๋ฐ๊ณ , count๋ฅผ ์ด๊ธฐํํด์ค๋ค.
IOI๊ฐ ๋ง๋ค๋ฉด cursor๋ฅผ ๋ ์นธ ๋ฐ๊ณ , count + 1์ ํด์ค๋ค.
๊ทธ๋ฆฌ๊ณ N๊ณผ ๋น๊ตํด์ count๊ฐ๊ณผ ๋๊ฐ๋ค๋ฉด ๊ฒฐ๊ด๊ฐ์ +1 ํด์ค๋ค.
์ดํ count - 1์ ํด์ค๋ค,
์๋ํ๋ฉด ์๋ฅผ ๋ค์ด IOIOIOI ๋ฌธ์์ด์์ N = 2 ๋ผ๋ฉด
IOIOIOI๋ฅผ ์ฐพ์ ์ดํ IOIOIOI๋ฅผ ์ฐพ์์ผ ํ๋ฏ๋ก count๊ฐ์ 1 ์ค์ฌ์ฃผ๋ ๊ฒ์ด๋ค.
cursor๊ฐ ๋ฌธ์์ด ๋๊น์ง ๊ฐ๋ฉด while๋ฌธ์ ์ข ๋ฃํด์ฃผ๋ฉด ๋๋ค.
์ ์ฒด ์ฝ๋
N = int(input())
M = int(input())
S = input()
cursor, count, result = 0, 0, 0
while cursor < (M - 1):
if S[cursor:cursor + 3] == 'IOI': #3์นธ
count += 1
cursor += 2
if count == N:
result += 1
count -= 1
else:
cursor += 1
count = 0
print(result)
์์ด๋์ด
'๐งฉ Problem Solving > [๋ฐฑ์ค]' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 2096 ๋ด๋ ค๊ฐ๊ธฐ (python ํ์ด์ฌ) (0) | 2022.07.04 |
---|---|
[๋ฐฑ์ค] 16928 ๋ฑ๊ณผ ์ฌ๋ค๋ฆฌ ๊ฒ์ (python ํ์ด์ฌ) (0) | 2022.07.03 |
[๋ฐฑ์ค] 9375 ํจ์ ์ ์ ํด๋น (python ํ์ด์ฌ) (0) | 2022.06.29 |
[๋ฐฑ์ค] 1074 Z (python ํ์ด์ฌ) (0) | 2022.06.26 |
[๋ฐฑ์ค] 9019 DSLR (python ํ์ด์ฌ) (0) | 2022.06.26 |