ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [๋ฐฑ์ค€] 1244 ์Šค์œ„์น˜ ์ผœ๊ณ  ๋„๊ธฐ with Python
    PS 2021. 10. 17. 21:38
    728x90
    ๋ฐ˜์‘ํ˜•

    ๐Ÿ“Œ BOJ 1244 ์Šค์œ„์น˜ ์ผœ๊ณ  ๋„๊ธฐ

    ๐Ÿ’ก ์กฐ๊ฑด ๋ฐ ํ’€์ด

    1. ์ฒซ์งธ ์ค„์€ ์Šค์œ„์น˜ ๊ฐœ์ˆ˜. ์Šค์œ„์น˜ ๊ฐœ์ˆ˜๋Š” 100 ์ดํ•˜์ธ ์–‘์˜ ์ •์ˆ˜.
      ๋‘˜์งธ ์ค„์€ ๊ฐ ์Šค์œ„์น˜์˜ ์ƒํƒœ. ์ผœ์ ธ ์žˆ์œผ๋ฉด 1, ๊บผ์ ธ์žˆ์œผ๋ฉด 0์ด๋ผ๊ณ  ํ‘œ์‹œ
      ์…‹์งธ ์ค„์—๋Š” ํ•™์ƒ ์ˆ˜. ํ•™์ƒ์ˆ˜๋Š” 100 ์ดํ•˜์ธ ์–‘์˜ ์ •์ˆ˜
      ๋„ท์งธ ์ค„๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ์ค„๊นŒ์ง€ ํ•œ ์ค„์— ํ•œ ํ•™์ƒ์˜ ์„ฑ๋ณ„, ํ•™์ƒ์ด ๋ฐ›์€ ์ˆ˜.

    2. ๋‚จํ•™์ƒ์€ ์Šค์œ„์น˜ ๋ฒˆํ˜ธ๊ฐ€ ์ž๊ธฐ๊ฐ€ ๋ฐ›์€ ์ˆ˜์˜ ๋ฐฐ์ˆ˜์ด๋ฉด, ๊ทธ ์Šค์œ„์น˜์˜ ์ƒํƒœ๋ฅผ ๋ฐ”๊พผ๋‹ค. ์ฆ‰, ์Šค์œ„์น˜๊ฐ€ ์ผœ์ ธ ์žˆ์œผ๋ฉด ๋„๊ณ , ๊บผ์ ธ ์žˆ์œผ๋ฉด ์ผ ๋‹ค.

    3. ์—ฌํ•™์ƒ์€ ์ž๊ธฐ๊ฐ€ ๋ฐ›์€ ์ˆ˜์™€ ๊ฐ™์€ ๋ฒˆํ˜ธ๊ฐ€ ๋ถ™์€ ์Šค์œ„์น˜๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ์ขŒ์šฐ๊ฐ€ ๋Œ€์นญ์ด๋ฉด์„œ ๊ฐ€์žฅ ๋งŽ์€ ์Šค์œ„์น˜๋ฅผ ํฌํ•จํ•˜๋Š” ๊ตฌ๊ฐ„์„ ์ฐพ์•„์„œ,
      ๊ทธ ๊ตฌ๊ฐ„์— ์†ํ•œ ์Šค์œ„์น˜์˜ ์ƒํƒœ๋ฅผ ๋ชจ๋‘ ๋ฐ”๊พผ๋‹ค. ์ด๋•Œ ๊ตฌ๊ฐ„์— ์†ํ•œ ์Šค์œ„์น˜ ๊ฐœ์ˆ˜๋Š” ํ•ญ์ƒ ํ™€์ˆ˜๊ฐ€ ๋œ๋‹ค.

    4. ๊ตฌํ˜„ & ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์œ ํ˜•์˜ ๋ฌธ์ œ

    5. ํ•™์ƒ๋“ค์€ ์ž…๋ ฅ๋˜๋Š” ์ˆœ์„œ๋Œ€๋กœ ์ž๊ธฐ์˜ ์„ฑ๋ณ„๊ณผ ๋ฐ›์€ ์ˆ˜์— ๋”ฐ๋ผ ์Šค์œ„์น˜์˜ ์ƒํƒœ๋ฅผ ๋ฐ”๊พธ์—ˆ์„ ๋•Œ, ์Šค์œ„์น˜๋“ค์˜ ๋งˆ์ง€๋ง‰ ์ƒํƒœ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ.

    ๐Ÿ–ฅ ์†Œ์Šค ์ฝ”๋“œ

    from sys import stdin
    
    n = int(stdin.readline())
    switch = [0] + list(map(int, stdin.readline().split()))
    
    for i in range(int(stdin.readline())):
        g, num = map(int, stdin.readline().split())
    
        if g == 1:
            for i in range(num, n + 1, num):
                switch[i] = 1 if switch[i] == 0 else 0
    
        elif g == 2:
            if num + 1 > n or num - 1 < 1:
                switch[num] = 1 if switch[num] == 0 else 0
            else:
                if switch[num + 1] == switch[num - 1]:
                    left = num - 1
                    right = num + 1
    
                    while 1:
                        if left - 1 < 1 or right + 1 > n:
                            break
    
                        if switch[left - 1] != switch[right + 1]:
                            break
    
                        else:
                            left -= 1
                            right += 1
    
                    for i in range(left, right + 1):
                        switch[i] = 1 if switch[i] == 0 else 0
                else:
                    switch[num] = 1 if switch[num] == 0 else 0
    
    
    for i in range(1, n, 20):
        print(*switch[i:i+20])

    ๐Ÿ”– ์˜ˆ์ œ ๋ฐ ์‹คํ–‰๊ฒฐ๊ณผ

    ์˜ˆ์ œ

    8
    0 1 0 1 0 0 0 1
    2
    1 3
    2 3

    ์‹คํ–‰๊ฒฐ๊ณผ

    1 0 0 0 1 1 0 1

    โŒจ๏ธ ๋ฌธ์ œ ํ’€์ด

    1. ํ•™์ƒ์˜ ์ˆ˜๋งŒํผ ์ˆœํšŒํ•˜์—ฌ ๋‚จ์ž์ผ ๋•Œ์™€ ์—ฌ์ž์ผ ๋•Œ๋ฅผ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์กฐ๊ฑด๋ฌธ์„ ์ง ๋‹ค.
      (๋‚ด๊ฐ€ ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š” ๋ฐฉ์‹์€ ์ด๋Ÿฌํ•˜๋‹ค. ์ด๋ ‡๊ฒŒ ํฐ ํ‹€์„ ์งœ๋†“๊ณ  ๊ตฌํ˜„ํ•˜๋ฉด ํ›จ์”ฌ ํŽธํ•˜๋‹ค.)

    2. ๋‚จ์ž๋Š” ์ง€๋ฌธ์— ๋‚˜์˜ค๋Š” ๊ฒƒ์ฒ˜๋Ÿผ, ์Šค์œ„์น˜์˜ ์ƒํƒœ๊ฐ€ 1์ผ ๋•Œ 0์œผ๋กœ, 0์ผ ๋•Œ 1๋กœ ๋ณ€๊ฒฝํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

    3. ์—ฌ์ž์˜ ๊ฒฝ์šฐ, ์ขŒ์šฐ๋กœ ๋Œ€์นญํ•˜๋Š”์ง€ ์ฐพ๊ธฐ ์ „์—, ํ˜„์žฌ ํ•™์ƒ์ด ๋ฐ›์€ ์ˆ˜์— 1์”ฉ ๋”ํ•˜๊ณ  ๋นผ์„œ ์Šค์œ„์น˜๋กœ ์ž…๋ ฅ๋ฐ›์€ ๋ฆฌ์ŠคํŠธ ๋ฒ”์œ„ ๋‚ด์ธ์ง€๋ถ€ํ„ฐ ํ™•์ธํ•œ๋‹ค.
      ๋ฒ”์œ„ ๋‚ด์ธ ๊ฒฝ์šฐ, ํ˜„์žฌ ๋ฒˆํ˜ธ์˜ ์–‘์ชฝ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐ™์€์ง€ ํ™•์ธํ•˜๊ณ , ์ผ์น˜ํ•œ๋‹ค๋ฉด left, right ๋ณ€์ˆ˜์— ์ขŒ์ธก, ์šฐ์ธก์˜ ์ธ๋ฑ์Šค ๋ฒˆํ˜ธ๋ฅผ ๋„ฃ์–ด์ค€๋‹ค.

    4. while ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ์–‘์ธก์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐ™์ง€ ์•Š์„ ๋•Œ, ๋ฆฌ์ŠคํŠธ์˜ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚  ๋•Œ break๋ฅผ ๊ฑธ์–ด์ฃผ๊ณ 
      left์™€ right๋ฅผ ๊ฐฑ์‹ ํ•œ๋‹ค.

    5. while ๋ฐ˜๋ณต์ด ๋๋‚œ ํ›„, range(left, right + 1) ๋ฒ”์œ„์˜ ๋ฆฌ์ŠคํŠธ ์›์†Œ๋ฅผ ๋ณ€๊ฒฝํ•ด์ค€๋‹ค.
      0 ์ผ๋•Œ 1, 1 ์ผ๋•Œ, 0

    6. 20๊ฐœ์”ฉ ์ถœ๋ ฅํ•˜๋Š” ๊ฒƒ์€ ์•„๋ž˜์™€ ๊ฐ™์ด for ๋ฌธ์—์„œ ์กฐ์ ˆํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

    for i in range(1, n, 20):
        print(*switch[i:i+20])

    ๐Ÿ’พ ๋Š๋‚€์ 

    1. ์กฐ๊ฑด๋ฌธ๋งŒ ์ถฉ์‹คํžˆ ์ง€ํ‚ค๋ฉด ์ž˜ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์˜€๋‹ค.
    2. ์—ฌํ•™์ƒ์ด ๋ฐ”๊พธ๋Š” ์Šค์œ„์น˜๋“ค์˜ ์กฐ๊ฑด์„ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ์— ์‚ด์ง ํž˜์ด ๋“ค๋ป”ํ–ˆ๋‹ค.
    3. ๋งํฌ๋“œ๋ฆฌ์ŠคํŠธ๋กœ ํ’€์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์„ ํ–ˆ๋‹ค.
    4. ๋‹ค์Œ๋ฒˆ์—๋Š” ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ์—ฐ์Šต์„ ํ•ด๋ณด์•„์•ผ๊ฒ ๋‹ค.
    ๋ฐ˜์‘ํ˜•

    ๋Œ“๊ธ€

Designed by Tistory.