기타

코드업 6097 - 설탕과자 뽑기

히어로맛쿠키 2022. 2. 6. 19:30

그냥.. 파이썬 익힐겸.. 간단히.. 

 

 

h, w = map(int, input().split())
n = int(input())

# stick_list에는 각 막대의 정보가 tuple로 담겨있다.
stick_list = []
for i in range(n):
  l, d, x, y = map(int, input().split())
  stick_list.append((l, d, x, y))

# 판 형태 - 2차원 list - False로 채운다 - 0행,0열은 사용X
pad = [ [False for _ in range(w+1)] for _ in range(h+1) ]

# 판에 막대 놓기 - False을 True로 변경 - XOR 이용
for stick in range(n):
  l = stick_list[stick][0]
  d = stick_list[stick][1]
  x = stick_list[stick][2]
  y = stick_list[stick][3]
  if d == 0:  # stick 가로 배치
    for length in range(l):
      pad[x][y+length] = pad[x][y+length]^True
  if d == 1:  # stick 세로 배치
    for length in range(l):
      pad[x+length][y] = pad[x+length][y]^True

# 출력하기
for h in range(1,h+1):
  for w in range(1,w+1):
    print(int(pad[h][w]), end=' ')
  print()

 

[ 방법 부연 설명 ]

- stick_list에는 각 stick의 속성 4개가 튜플로 묶여 담겨있다. 즉, 리스트의 요소는 각 stick이다.

- 판 형태 pad를 만들어준다. 각 요소는 모두 False

- stick_list의 tuple에서 각 stick 정보를 꺼내어, 이에 따라 stick을 pad에 배치해준다.  

 

 

 

 

반응형