문제를 그대로 코드로 구현하는 유형의 문제다
switch를 0에서 1로, 1에서 0으로 변환하는 부분은 함수로 따로 구현하여 문제를 해결하면 효율적이다
소스 코드
def change(num):
if switch[num] == 0:
switch[num] = 1
else:
switch[num] = 0
return
n = int(input())
switch = [-1] + list(map(int, input().split()))
s = int(input())
for _ in range(s):
gender, num = map(int, input().split())
# 남학생일 경우
if gender == 1:
for i in range(num, n+1, num):
change(i)
# 여학생일 경우
elif gender == 2:
change(num)
# 양쪽 탐색
for i in range(n//2):
if num+i > n or num-i < 1:
break
if switch[num+i] == switch[num-i]:
change(num+i)
change(num-i)
else:
break
# 한 줄에 20개씩 출력
for i in range(1, n+1):
print(switch[i], end = ' ')
if i % 20 == 0:
print()