첫째 줄에는 스위치 개수가 주어진다. 스위치 개수는 100 이하인 양의 정수이다. 둘째 줄에는 각 스위치의 상태가 주어진다. 켜져 있으면 1, 꺼져있으면 0이라고 표시하고 사이에 빈칸이 하나씩 있다. 셋째 줄에는 학생수가 주어진다. 학생수는 100 이하인 양의 정수이다. 넷째 줄부터 마지막 줄까지 한 줄에 한 학생의 성별, 학생이 받은 수가 주어진다. 남학생은 1로, 여학생은 2로 표시하고, 학생이 받은 수는 스위치 개수 이하인 양의 정수이다. 학생의 성별과 받은 수 사이에 빈칸이 하나씩 있다.
스위치의 상태를 1번 스위치에서 시작하여 마지막 스위치까지 한 줄에 20개씩 출력한다. 예를 들어 21번 스위치가 있다면 이 스위치의 상태는 둘째 줄 맨 앞에 출력한다. 켜진 스위치는 1, 꺼진 스위치는 0으로 표시하고, 스위치 상태 사이에 빈칸을 하나씩 둔다.
- 남자, 여자를 나누어서 풀이
- 남자인 경우, 배수 일때 스위치를 바꿔주어야 하므로 range를 이용해 간격을 두어 배수만 찾아다니도록 함
- 여자인 경우, 전체길이의//2 만큼 탐색하도록 함.(양쪽을 탐색하므로)
- 그리고 스위치의 상태를 바꾸는 것은 남자나 여자나 공통적으로 필요함으로 따로 함수를 두어 사용
import sys
sys.stdin = open ("input.txt", "rt")
input = sys.stdin.readline
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()))
students = int(input())
for _ in range(students):
sex, num = map(int, input().split())
# 남자
if sex == 1:
for i in range(num, N+1, num):
change(i)
# 여자
else:
change(num)
for k in range(N//2):
if num + k > N or num - k < 1 : break
if switch[num + k] == switch[num - k]:
change(num + k)
change(num - k)
else:
break
for i in range(1, N+1):
print(switch[i], end = " ")
if i % 20 == 0 :
print()