https://www.acmicpc.net/problem/1244
switch_count = int(input())
switch = list(map(int, input().split()))
number_of_people = int(input())
for case in range(number_of_people):
gender, switch_num = map(int,input().split())
#남학생인 경우
if gender == 1:
for idx in range(switch_count) :
if (idx+1) % switch_num == 0 :
switch[idx] = 0 if switch[idx] else 1
#여학생인 경우
else :
idx = 1
while True:
#인덱스가 왼쪽 끝에 도달한 경우
if (switch_num - 1 - idx) < 0 :
idx -= 1
break
#인덱스가 오른쪽 끝에 도달한 경우
elif (switch_num - 1 + idx) == switch_count:
idx -= 1
break
#양쪽 값이 다른 경우
elif switch[switch_num - 1 - idx] != switch[switch_num - 1 + idx] :
idx -= 1
break
idx += 1
#해당하는 범위의 모든 값을 변경시켜줌
for num in range((switch_num - 1 - idx) , (switch_num + idx)) :
switch[num] = 0 if switch[num] else 1
#스위치의 개수가 20개를 넘는 경우와 아닌 경우를 분리
if switch_count > 20:
for i in range(switch_count//20):
print(' '.join(list(map(str,switch[20*i : 20*i + 20]))))
print(' '.join(list(map(str,switch[20*i + 20:]))))
#스위치의 개수가 20개를 넘지 않는 경우
else :
print(' '.join(list(map(str,switch))))
else
에 while
문 쪽을 보완가능할 것 같다!
not
을 활용하면 조건 표현식보다 더 간단하게 표현할 수 있을 것 같다!