[๋ฐฑ์ค€] 5525 IOIOI (python ํŒŒ์ด์ฌ)

2022. 7. 3. 01:32ยท๐Ÿงฉ Problem Solving/[๋ฐฑ์ค€]

https://www.acmicpc.net/problem/5525

 

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์ด ๋ช‡

www.acmicpc.net

์˜ค๋žœ๋งŒ์— ๋ถ€๋ถ„์ ์ˆ˜๊ฐ€ ์žˆ๋Š” ๋ฌธ์ œ 


์•„์ด๋””์–ด

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
'๐Ÿงฉ Problem Solving/[๋ฐฑ์ค€]' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [๋ฐฑ์ค€] 2096 ๋‚ด๋ ค๊ฐ€๊ธฐ (python ํŒŒ์ด์ฌ)
  • [๋ฐฑ์ค€] 16928 ๋ฑ€๊ณผ ์‚ฌ๋‹ค๋ฆฌ ๊ฒŒ์ž„ (python ํŒŒ์ด์ฌ)
  • [๋ฐฑ์ค€] 9375 ํŒจ์…˜์™• ์‹ ํ•ด๋นˆ (python ํŒŒ์ด์ฌ)
  • [๋ฐฑ์ค€] 1074 Z (python ํŒŒ์ด์ฌ)
์ œ๋ด‰์•„
์ œ๋ด‰์•„
  • ์ œ๋ด‰์•„
    Overthinking
    ์ œ๋ด‰์•„
    fake it till you make it.
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (104)
      • ๐Ÿงฉ Problem Solving (83)
        • [๋ฐฑ์ค€] (74)
        • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] (7)
        • [SW Expert Academy] (1)
        • [์•Œ๊ณ ๋ฆฌ์ฆ˜ for PS] (1)
      • ๐Ÿ“ฆ Data Structure (2)
      • ๐Ÿ“œ Language (14)
        • [python] (14)
      • ๐Ÿ–ค Git (1)
      • ๐ŸŒ† ์ผ์ƒ (2)
        • ๐Ÿ’ฌ ๋ฒฝ๋ณด๊ณ  ๋งํ•˜๊ธฐ (2)
      • ๐Ÿ—„๏ธ ๊ธฐํƒ€ (2)
      • ๐Ÿ”ต css (0)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ์œ„์ƒ์ •๋ ฌ
    BFS
    SWEA
    slicing
    Python
    ํŒฐ๋ฆฐ๋“œ๋กฌ
    ํ”Œ๋กœ์ด๋“œ ์™€์ƒฌ
    ๋ˆ„์ ํ•ฉ
    DP
    ์Šคํƒ
    ๋ธŒ๋ฃจํŠธํฌ์Šค
    ํˆฌํฌ์ธํ„ฐ
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    ๋‹ค์ต์ŠคํŠธ๋ผ
    ํŒŒ์ด์ฌ
    ๋ฐฑ์ค€
    ๋ถ€๋ถ„ํ•ฉ
    DFS
    Bruteforce
    ์ •์ฒ˜๊ธฐ
    ๊ตฌํ˜„
    ๋ถ„ํ•  ์ •๋ณต
    boj
    ํ”Œ๋กœ์ด๋“œ์›Œ์…œ
    imos
    ๊ทธ๋ฆฌ๋””
    ๋ƒ…์ƒ‰
    ์žฌ๊ท€
    ๋ฐ๋ธŒ์ฝ”์Šค
    ๋ฐฑํŠธ๋ž˜ํ‚น
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
์ œ๋ด‰์•„
[๋ฐฑ์ค€] 5525 IOIOI (python ํŒŒ์ด์ฌ)
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”