[Baekjoon] - 5525. IOIOI (S2)

์˜ค๋™ํ›ˆยท2022๋…„ 2์›” 8์ผ
0

Baekjoon

๋ชฉ๋ก ๋ณด๊ธฐ
41/58
post-thumbnail

1. Problem ๐Ÿ“ƒ

๐Ÿ“š ์ถœ์ฒ˜ - 5525 - IOIOI

๋ฌธ์ œ ์„ค๋ช…
N+1๊ฐœ์˜ I์™€ N๊ฐœ์˜ O๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉด, I์™€ O์ด ๊ต๋Œ€๋กœ ๋‚˜์˜ค๋Š” ๋ฌธ์ž์—ด์„ PN์ด๋ผ๊ณ  ํ•œ๋‹ค.

  • P1 IOI
  • P2 IOIOI
  • P3 IOIOIOI
  • PN IOIOI...OI (O๊ฐ€ N๊ฐœ)

I์™€ O๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์ž์—ด S์™€ ์ •์ˆ˜ N์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, S์•ˆ์— PN์ด ๋ช‡ ๊ตฐ๋ฐ ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ
์ฒซ์งธ ์ค„์— N์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„์—๋Š” S์˜ ๊ธธ์ด M์ด ์ฃผ์–ด์ง€๋ฉฐ, ์…‹์งธ ์ค„์— S๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.

์ถœ๋ ฅ
S์— PN์ด ๋ช‡ ๊ตฐ๋ฐ ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ์ถœ๋ ฅํ•œ๋‹ค.

์ œํ•œ

  • 1 โ‰ค N โ‰ค 1,000,000
  • 2N+1 โ‰ค M โ‰ค 1,000,000
  • S๋Š” I์™€ O๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

์„œ๋ธŒํƒœ์Šคํฌ

๋ฒˆํ˜ธ๋ฐฐ์ ์ œํ•œ
150N โ‰ค 100, M โ‰ค 10 000.
250์ถ”๊ฐ€์ ์ธ ์ œ์•ฝ ์กฐ๊ฑด์ด ์—†๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

์˜ˆ์ œ ์ž…๋ ฅ์˜ˆ์ œ ์ถœ๋ ฅ
1
13
OOIOIOIOIIOII
4
2
13
OOIOIOIOIIOII
2

2. Logic ๐Ÿ‘จโ€๐Ÿซ

์ด ๋ฌธ์ œ ์ฒ˜์Œ์—๋Š” ์ž…๋ ฅ ๋ฐ›์€ ์ „์ฒด๋ฅผ ๋น„๊ตํ•˜๋ ค ํ–ˆ์œผ๋‚˜ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.
๊ทธ๋ž˜์„œ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ด ์–ด๋–ค๊ฒŒ ์žˆ๋‚˜ ํ•˜๊ณ  ์ฐพ์•„๋ดค๋Š”๋ฐ ์ด๋Ÿฐ์‹์œผ๋กœ ๊ตฌํ˜„ํ•œ ์‚ฌ๋žŒ์ด ์žˆ์–ด ์ฐธ๊ณ ํ–ˆ๋‹ค.

  1. IOI๊ฐ€ ๋ฐ˜๋ณต๋˜๋Š” ๊ฑธ ์ฐพ๋Š” ๋ฌธ์ œ๊ณ , ์•„๋ž˜์˜ ํ‘œ์™€ ๊ฐ™์€ ๊ตฌ์กฐ๋กœ ๋˜์–ด ์žˆ๋‹ค.
    IOI๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ฐœ์ˆ˜๋ฅผ ์„ธ์–ด ์ฃผ๊ณ , ๊ทธ ๊ฐœ์ˆ˜๊ฐ€ N์ด๋ž‘ ์ผ์น˜ํ•œ๋‹ค๋ฉด ๊ฒฐ๊ณผ๊ฐ’์„ +1 ํ•ด์ค€๋‹ค.
    ๊ทธ๋ฆฌ๊ณ  ์ค‘๋ณต์ด ๋˜์–ด๋„ ๊ดœ์ฐฎ์œผ๋‹ˆ cnt๋ฅผ -1๋งŒ ํ•ด์ฃผ๊ณ  ๋‹ค์‹œ ๋‹ค์Œ๋ถ€ํ„ฐ ์ˆœํšŒํ•˜๋ฉฐ ๋ฐ˜๋ณตํ•ด์ค€๋‹ค.
----
1IOI
2IOIOI
3IOIOIOI

3. Code ๐Ÿ’ป

1. ์ฐธ๊ณ ํ•ด ํ‘ผ ์ฝ”๋“œ ๐Ÿ˜

N = int(input())
M = int(input())
s = input()
i = 1
cnt = 0 # ํŒจํ„ด ํšŸ์ˆ˜ check
ans = 0

while i < M-1:
    if s[i-1] == 'I' and s[i] == 'O' and s[i+1] == 'I':
        cnt += 1
        if cnt == N:
            ans += 1
            cnt -= 1
        i += 1
    else:
        cnt = 0
    i += 1

print(ans)
profile
์‚ฝ์งˆ์˜ ๊ธฐ๋ก๋“ค๐Ÿฅ

0๊ฐœ์˜ ๋Œ“๊ธ€