풀이


입력값을 통해 현재 스위치 상황과 스위치를 변경시킬 명령이 차례로 주어지는데, 성별에 따라 주어진 스위치 상태를 변경하는 방식이 달라진다.

입력값을 주어진 변수에 적절히 저장할 때 스위치 순서는 1 부터 시작하기 때문에 인덱싱 활용을 고려해서 스위치 상황 리스트 맨 앞에 임의의 원소를 집어넣어둔다.

이후 명령에 따라 스위치 상태가 변경될텐데 성별과 명령을 적용시킬 스위치를 매개변수로 받아 성별에 맞게 상태를 변경시키는 함수를 작성해 각 명령이 들어올 때 마다 스위치 상태가 변하도록 적용시켰다.

이후 출력조건에 맞춰서 스위치 상태를 출력해주면 해결이다.

(출력조건을 자세히 읽지 않았다가 왜 틀렸는지 해매고 있었다… 항상 문제를 꼼꼼히 읽자!)

소스코드


import sys
input = sys.stdin.readline
 
def change(sex, idx):
    global s
    if sex == 1:
        for i in range(1, n+1):
            if i%idx == 0:
                s[i] = abs(s[i] - 1)
    elif sex == 2:
        s[idx] = abs(s[idx] - 1)
        for i in range(1, min(n+1-idx, idx)):
            if s[idx-i] == s[idx+i]:
                s[idx-i], s[idx+i] = abs(s[idx-i] - 1), abs(s[idx+i] - 1)
            else:
                break
 
n = int(input())
s = ["X"] + list(map(int, input().split()))
students = int(input())
operations = []
for _ in range(students):
    sex, idx = map(int, input().split())
    change(sex, idx)
 
for i in range(0, n, 20):
    print(*s[i+1:i+21])

References