10.1. 문제유형
10.2. 해결과정
- 여성일 경우와 남성일 경우를 처리하는 함수를 2개 구성했다.
- 남성의 경우 받은 번호의 배수에 해당하는 스위치를 Turnoff한다.
- 배수임을 확인할 때는 입력받은 값을 그대로 사용하되, 인덱싱할 때는 -1 처리한다.
- 여성의 경우 받은 번호의 양 옆 대칭인 스위치를 Turnoff한다.
- 입력받은 값을 -1 처리 후 왼쪽, 오른쪽 값을 인덱싱한다.
10.3. 소스코드
n=int(input())
switch=list(map(int,input().split()))
s=int(input())
students=[list(map(int, input().split())) for _ in range(s)]
def male(num):
for i in range(1, len(switch)+1):
if i % num == 0:
switch[i-1] = (switch[i-1]+1)%2
return 0
def female(num):
num = num-1
s,e = num-1, num+1
switch[num]=(switch[num]+1)%2
while True:
if not (0<=s<n and 0<=e<n):
return 0
if switch[s]==switch[e]:
switch[s]=(switch[s]+1)%2
switch[e]=(switch[e]+1)%2
else:
return 0
s,e = s-1, e+1
for sex, num in students:
if sex==1:
male(num)
else:
female(num)
for i in range(len(switch)):
if i>0 and i%20==0:
print()
print(switch[i], end=' ')