반응형
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=" ")
반응형

'computer 지식 > 알고리즘 정복기' 카테고리의 다른 글

4396 지뢰찾기 백준 파이썬  (0) 2021.10.13
12933 오리 백준 파이썬  (0) 2021.10.13
백준 1212 파이썬  (0) 2021.10.11
백준 2753번 파이썬  (0) 2021.10.11
백준 상어초등학교 21608 파이썬  (0) 2021.10.11

+ Recent posts