๋ฐฑ์ค€

๋ฐฑ์ค€ 1244 ์Šค์œ„์น˜ ์ผœ๊ณ  ๋„๊ธฐ - ํŒŒ์ด์ฌ

stoneeee 2022. 11. 18. 20:48

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

 

1244๋ฒˆ: ์Šค์œ„์น˜ ์ผœ๊ณ  ๋„๊ธฐ

์ฒซ์งธ ์ค„์—๋Š” ์Šค์œ„์น˜ ๊ฐœ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์Šค์œ„์น˜ ๊ฐœ์ˆ˜๋Š” 100 ์ดํ•˜์ธ ์–‘์˜ ์ •์ˆ˜์ด๋‹ค. ๋‘˜์งธ ์ค„์—๋Š” ๊ฐ ์Šค์œ„์น˜์˜ ์ƒํƒœ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ผœ์ ธ ์žˆ์œผ๋ฉด 1, ๊บผ์ ธ์žˆ์œผ๋ฉด 0์ด๋ผ๊ณ  ํ‘œ์‹œํ•˜๊ณ  ์‚ฌ์ด์— ๋นˆ์นธ์ด ํ•˜๋‚˜์”ฉ

www.acmicpc.net

 

 

# ์Šค์œ„์น˜ ์ €์žฅํ•  ๋ฆฌ์ŠคํŠธ

๊ท€์ฐฎ๊ฒŒ ์Šค์œ„์น˜ ๋ฒˆํ˜ธ๊ฐ€ 1๋ฒˆ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ๋‹ค.

์ด๊ฑธ ๊ณ„์‚ฐํ•  ๋•Œ๋งˆ๋‹ค ๊ณ ๋ คํ•ด์ค˜๋„ ๋˜๊ณ , ๋ฆฌ์ŠคํŠธ ์•ž์— 0๋ฒˆ์„ ์ถ”๊ฐ€ํ•ด๋†“์•„๋„ ๋œ๋‹ค. ๋‚˜๋Š” ํ›„์ž๋กœ ๋†“๊ณ  ํ’€์—ˆ๋‹ค.

์ทจํ–ฅ๊ป ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค.

๋‹จ, ํ›„์ž๋Š” ์—ฌํ•™์ƒ์ด ์žˆ์ง€๋„ ์•Š์€ 0๋ฒˆ ์Šค์œ„์น˜์„ ์ผœ๊ณ  ๋„์ง€ ์•Š๋„๋ก ์œ ์˜ํ•ด์•ผ ํ•œ๋‹ค.

 

 

# ์Šค์œ„์น˜ ๋ฐ”๊พธ๋Š” ํ•จ์ˆ˜

์ด๊ฒƒ๋„ ์ทจํ–ฅ๊ป ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค.

dictionary์— {1:0, 0:1} ์ด๋Ÿฐ ์‹์œผ๋กœ ๋„ฃ์–ด๋„ ๋˜๊ณ  if๋ฌธ ๋นก๊ตฌํ˜„ํ•ด๋„ ๋œ๋‹ค.

 

 

# ๋‚จ์ž์ผ ๋•Œ

for๋ฌธ์„ ์‚ฌ์šฉํ•ด๋„ ๋œ๋‹ค. ๋‚˜๋Š” while๋ฌธ์„ ์ด์šฉํ•ด์„œ i๋ฅผ 1๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ๋Š˜๋ ค ๊ฐ€๋ฉด์„œ ๋ฒ”์œ„์— ๋งž๋Š” no * i๋ฅผ ๋ฐ”๊ฟ”์คฌ๋‹ค.

 

 

# ์—ฌ์ž์ผ ๋•Œ

์ผ๋‹จ ๋ˆ„๋ฅธ ์Šค์œ„์น˜์˜ ์ƒํƒœ๋ฅผ ๋ฐ”๊ฟ”์ค€๋‹ค.

์ดํ›„ i๋ฅผ 1๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ์ฆ๊ฐ€์‹œํ‚ค๋ฉฐ ์Šค์œ„์น˜ ± i ๊ฐ€ ๋ฆฌ์ŠคํŠธ ๋ฒ”์œ„ ๋‚ด์ด๊ณ , ๋‘˜์˜ ์ƒํƒœ๊ฐ€ ๊ฐ™๋‹ค๋ฉด ๋‘˜ ๋‹ค ์ƒํƒœ๋ฅผ ๋ฐ”๊ฟ”์ค€๋‹ค.

์กฐ๊ฑด์„ ๋งŒ์กฑ์‹œํ‚ค์ง€ ๋ชปํ•  ๋•Œ ๋ฐ”๋กœ breakํ•ด์„œ ๋น ์ ธ ๋‚˜์™€ ์ค€๋‹ค.

 

 

# ์ถœ๋ ฅ

1๋ฒˆ ~ n๋ฒˆ ์Šค์œ„์น˜์˜ ์ƒํƒœ๋ฅผ ์ถœ๋ ฅํ•ด์ค€๋‹ค.

20๊ฐœ๋ฅผ ์ถœ๋ ฅํ•  ๋•Œ๋งˆ๋‹ค ๊ผญ ์ค„๋ฐ”๊ฟˆ์„ ํ•ด์•ผํ•œ๋‹ค.

 

 

 

๊ฐ€๋Šฅํ•œ ์˜ค๋‹ต ์›์ธ : ์ถœ๋ ฅ ์‹œ ์ค„๋ฐ”๊ฟˆ, ๋ฒ”์œ„ ์ฒดํฌ ๋‹ค์‹œ ํ•˜๊ธฐ(์—ฌํ•™์ƒ์ด switch ๋ฆฌ์ŠคํŠธ์—์„œ index 0๋ฒˆ ๋งŒ์ง€๊ณ  ์žˆ๋Š” ์ง€)

 

 

n = int(input())
switch = [0] + list(map(int, input().split())) # ์Šค์œ„์น˜ ์ƒํƒœ ์ €์žฅ

# ์Šค์œ„์น˜ ๋ฐ”๊พธ๋Š” ํ•จ์ˆ˜
def change(x):
    global switch
    switch[x] = abs(switch[x]-1)


for _ in range(int(input())):
    gender, no = map(int, input().split())
    i = 1
    # ๋‚จ์ž์ผ ๋•Œ
    if gender == 1:
        while no * i <= n:
            change(no * i)
            i += 1
    # ์—ฌ์ž์ผ ๋•Œ
    elif gender == 2:
        change(no)
        while 1 <= no-i and no+i <= n and switch[no-i] == switch[no+i]:
            change(no-i)
            change(no+i)
            i += 1

# ์ถœ๋ ฅ
for i in range(1, n+1):
    print(switch[i], end=" ")
    if not i % 20:
        print()

 

 


์Šค์œ„์น˜ ๋ฒˆํ˜ธ๋ฅผ ํ•˜๋‚˜์”ฉ ์ค„์—ฌ์„œ ์šฐ๊ฒจ ๋„ฃ์–ด์„œ ํ’€๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

+ map์„ ์ด์šฉํ•ด์„œ ์Šค์œ„์น˜ ์ƒํƒœ๋ฅผ ๋ฐ”๊ฟ”์ฃผ์—ˆ๋‹ค.

์‚ฌ์‹ค ๋˜‘๊ฐ™๋‹ค.

 

n = int(input())
switch = list(map(int, input().split())) # ์Šค์œ„์น˜ ์ƒํƒœ ์ €์žฅํ•  ๋ฆฌ์ŠคํŠธ
change = {1: 0, 0: 1} # ์Šค์œ„์น˜ ๋ฐ”๊พธ๋Š” dictionary

for _ in range(int(input())):
    gender, no = map(int, input().split())
    i = 1
    # ๋‚จ์ž์ผ ๋•Œ
    if gender == 1:
        while no * i - 1 < n:
            switch[no*i-1] = change[switch[no*i-1]]
            i += 1
    # ์—ฌ์ž์ผ ๋•Œ
    elif gender == 2:
        switch[no-1] = change[switch[no-1]]
        while 1 <= no-i and no+i < n+1 and switch[no-i-1] == switch[no-1+i]:
            switch[no-1-i] = change[switch[no-1-i]]
            switch[no-1+i] = change[switch[no-1+i]]
            i += 1

# ์ถœ๋ ฅ
for i in range(n):
    print(switch[i], end=" ")
    if i % 20 == 19:
        print()