[๋ฐฑ์ค€] IOIOI

[๋ฐฑ์ค€] IOIOI


ํ’€์ด

๋ฌธ์ œ์˜ ์กฐ๊ฑด์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  1. N+1 ๊ฐœ์˜ โ€œIโ€ ์™€ N ๊ฐœ์˜ โ€œOโ€ ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์ž์—ด์ด ์žˆ์„ ๋•Œ, ์ด ๋ฌธ์ž์—ด์„ $ P_{N} $ ์ด๋ผ๊ณ  ํ•œ๋‹ค.

  2. I์™€ O๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์ž์—ด S์™€ ์ •์ˆ˜ N์ด ์ฃผ์–ด์งˆ ๋•Œ, S์•ˆ์— ๋“ค์–ด์žˆ๋Š” $ P_{N} $ ํŒจํ„ด์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ๋Š”๋‹ค.

# 50์ 
n = int(input())
M = int(input())
S = input()

pn = "IO"*n + "I"
cnt = 0

while S.find(pn) > -1:
  S = S[S.find(pn)+2:]
  cnt += 1

print(cnt)
# ์ •๋‹ต
N = int(input())
M = int(input())
S = input()

count = 0
cnt = 0
i = 1
while i < M - 1:
    if S[i-1] == "I" and S[i] == "O" and S[i+1] == "I":
        count += 1
        if count == N:
            count -= 1
            cnt += 1
        i += 1
    else:
        count = 0
    i += 1

print(cnt)


์‹ค์ˆ˜ ๋ฐ ๋ฐฐ์šด ์ 

  • ์ฒซ๋ฒˆ์งธ ๋งŒ๋“ค์—ˆ๋˜ ๋ฐฉ๋ฒ•์€ ์Šฌ๋ผ์ด์‹ฑ์„ ์ด์šฉํ•ด์„œ โ€˜์•žโ€™์—์„œ ๋ถ€ํ„ฐ ๋ฌธ์ž์—ด์„ ๋Š์–ด์คฌ๋‹ค.
    PN = โ€œIOIโ€ ๋ผ๊ณ  ํ•  ๋•Œ, S =IOIOIOIIIOO ๋ผ๊ณ  ํ•œ๋‹ค๋ฉด,
    ์•ž์ž๋ฆฌ์ธ โ€œIOโ€ ๋ฐ˜๋ณต๋˜๊ธฐ ๋•Œ๋ฌธ์—,
    find๋ฅผ ์ด์šฉํ•ด์„œ PN๊ณผ ๊ฐ™์€ ๋ฌธ์ž์—ด์ด ์žˆ๋Š” index๋ฅผ ์ฐพ๊ณ  cnt๋ฅผ ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ๋‹ค.
    1) IOIOIOIIIOO, cnt = 1
    2) IO(์ž๋ฆ„) IOIOIIIOO, cnt = 2
    3) IOIO(์ž๋ฆ„) IOIIIOO, cnt = 3
    ์ด๋Ÿฐ์‹์œผ๋กœ ์ž๋ฅด๋ฉด์„œ ๊ฐฏ์ˆ˜๋ฅผ ์…€ ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ๋‹ค.
    ํ•˜์ง€๋งŒ, ์‹œ๊ฐ„ ์ดˆ๊ณผ!

  • ๋‘๋ฒˆ์งธ ๋ฐฉ๋ฒ•์€ ๊ตฌ๊ธ€๋งํ•˜๋ฉด์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค.
    ์œ„์™€ ๊ฐ™์€ ๋ฌธ์ œ๋ผ ๊ฐ€์ •ํ–ˆ์„ ๋•Œ,
    index๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ขŒ์šฐ๋ฅผ ํ™•์ธํ•œ ๋‹ค์Œ์— PN์ด ์•„๋‹Œ โ€œIOIโ€์„ ์ฐพ๋Š”๋‹ค.
    ํŒจํ„ด์„ ์ฐพ๋Š”๋‹ค๋ฉด, index + 2๋ฅผ ํ•˜๋ฉด์„œ PN๊ณผ ๊ฐ™์€ ํŒจํ„ด์ด ๋  ๋•Œ ๊นŒ์ง€ ์ฐพ๋Š”๋‹ค.
    PN์„ ์ฐพ๋Š”๋‹ค๋ฉด count๋ฅผ N-1 ๊ฐœ๋กœ ๋งŒ๋“ค์–ด์ฃผ๊ณ  index + 2๋ฅผ ํ•ด์„œ ๊ทธ ๊ธฐ์ค€์œผ๋กœ ์ขŒ์šฐ์— IOI๊ฐ€ ์žˆ๋Š” ์ง€ ํ™•์ธํ•˜๋ฉด์„œ PN์„ ์ฐพ๋Š”๋‹ค.
    ์ฆ‰, ํŒจํ„ด์ด IOI๊ฐ€ ๋ฐ˜๋ณต๋œ๋‹ค๋Š” ๊ฒƒ์„ ์ด์šฉํ•œ๋‹ค.

    1) IOIOIOIIIOO, cnt = 1
    2) IOIOIOIIIOO, cnt = 2
    3) IOIOIOIIIOO, cnt = 3

  • ๋‘ ๋ฐฉ๋ฒ•์˜ ์ฐจ์ด๋ผ๋ฉด, PN์„ ์ฐพ๋Š” ๊ฒƒ๊ณผ โ€œIOIโ€๋ผ๋Š” ํŒจํ„ด์„ ์ฐพ๋Š” ๊ฒƒ์˜ ์ฐจ์ด์ธ ๊ฒƒ ๊ฐ™๋‹ค.
    ๋‚ด ์˜ˆ์ƒ์œผ๋กœ๋Š” PN์ด ๋„ˆ๋ฌด ๊ธธ๋ฉด find๋ฅผ ํ†ตํ•ด ํŒจํ„ด์„ ์ฐพ์„ ๋•Œ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋œจ๋Š” ๊ฒƒ ๊ฐ™๋‹ค.
    ์Šฌ๋ผ์ด์‹ฑ์„ IOI๋งŒ์„ ์ด์šฉํ•ด์„œ ํ’€์–ด๋„ ๋  ๊ฒƒ ๊ฐ™๋‹ค.

  • KMP ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ™œ์šฉ ๋ฐฉ๋ฒ• ์ฐพ์•„๋ณด๊ธฐ

ํƒœ๊ทธ: , ,

์นดํ…Œ๊ณ ๋ฆฌ:

์—…๋ฐ์ดํŠธ: