computer 지식/알고리즘 정복기

1244 스위치 켜고 끄기 백준 파이썬

semper.fidelis 2021. 10. 13. 22:54
반응형
n = int(input())
bulbs = list(map(int,input().split()))
student = []
student_num = int(input())
for i in range(student_num):
  student.append(list(map(int,input().split())))

for order in student:
  if order[0] ==1:
    rest = n//order[1]

    for i in range(1,rest+1):
      bulbs[order[1]*i - 1 ] = (bulbs[order[1]*i - 1 ] * -1) +1
  
  if order[0] ==2:
    limit_of_wing = min(order[1]-1, n-order[1] )
    change_range = limit_of_wing

    for j in range(1, limit_of_wing +1 ):
      if bulbs[order[1]-j-1 ] ==bulbs[order[1]+j-1]:
        pass
      else:
        change_range = j-1
        break

  
    for jj in range(2*change_range +1):
      bulbs[order[1]-change_range +jj-1 ] = (bulbs[order[1]-change_range +jj-1 ] * -1) +1

for bulb_index in range(n):
  if (bulb_index+1) %10 == 0:
    print(bulbs[bulb_index], sep="\n")
  else:
    print(bulbs[bulb_index],end=" ")
반응형