๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • What would life be If we had no courage to attemp anything?
Problem Solving/BAEKJOON

[baekjoon]python #1244 ์Šค์œ„์น˜ ์ผœ๊ณ  ๋„๊ธฐ

by DevIseo 2022. 3. 10.

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

 

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

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

www.acmicpc.net

N = int(input()) #์Šค์œ„์น˜ ๊ฐœ์ˆ˜
#์Šค์œ„์น˜ ์ƒํƒœ ๋ฆฌ์ŠคํŠธ. ์Šค์œ„์น˜ ๋ฒˆํ˜ธ ํ—ท๊ฐˆ๋ฆฌ๋‹ˆ๊นŒ 0๋ฒˆ์ธ๋ฑ์Šค์— 0๊ณผ1์ด ์•„๋‹Œ ์•„๋ฌด๊ฑฐ๋‚˜ ๋„ฃ์–ด์คŒ
switch=[-1]+ list(map(int,input().split()))
S = int(input()) # ํ•™์ƒ ์ˆ˜
for i in range(S): #ํ•™์ƒ ์„ฑ๋ณ„, ๋ฐ›์€ ์ˆ˜
    gen,num = map(int,input().split())

    if gen == 1: #ํ•™์ƒ์ด ๋‚จ์ž์ผ ๋•Œ
        for j in range(num,N+1,num): #๋ฐฐ์ˆ˜๋ฅผ ์ฐพ์•„ ์Šค์œ„์น˜ ๋ฐ”๊พธ๊ธฐ
            if switch[j] == 0:
                switch[j] = 1
            else:
                switch[j] = 0


    elif gen == 2: #ํ•™์ƒ์ด ์—ฌ์ž์ผ ๋•Œ

        #์ž๊ธฐ ์ž์‹ ์˜ ์Šค์œ„์น˜ ๋ฐ”๊พธ๊ธฐ
        if switch[num] == 1:
            switch[num] = 0
        else:
            switch[num] = 1

        #๋Œ€์นญ ๋˜๋Š” ๊ฐ’ ์ฐพ๊ธฐ
        #์–ด๋””๊ฐ€ ๋์ธ์ง€ ๋ชจ๋ฅด๋‹ˆ๊นŒ while๋ฌธ ์ด์šฉํ•˜๊ธฐ

        move=1 #์ด๋™ํ•˜๊ธฐ ์œ„ํ•œ ๋ณ€์ˆ˜
        while(num-move > 0 and num+move < N+1 and switch[num+move]==switch[num-move]):
            #๋Œ€์นญ ๋˜๋Š” ๊ฐ’๋“ค ๋ฐ”๊ฟ”์ฃผ๊ธฐ
            if switch[num+move] == 1:
                switch[num+move],switch[num-move] =0,0
            elif switch[num+move] == 0:
                switch[num + move], switch[num - move] = 1,1
            move+=1

# ์ฒ˜์Œ์— ๋„ฃ์–ด์ค€ 0๋ฒˆ ์ธ๋ฑ์Šค ์‚ญ์ œ
result = switch[1:]

#20๊ฐœ์”ฉ ์ถœ๋ ฅํ•˜๊ธฐ
for k in range(0,N,20):
    print(*result[k:k+20])

๋Œ“๊ธ€