[CodeUp] 6097 설탕과자 뽑기 (파이썬)

Jewon Joel Park·2022년 5월 28일

문제 링크


문제 설명

격자판 내에 막대를 놓았을 때, 막대에 의해 가려진 경우 1, 아닌 경우 0으로 출력하는 코드 작성
설탕과자 뽑기


풀이 코드

h, w = map(int, input().split())
n = int(input())
ldxy = [list(map(int, input().split())) for _ in range(n)]
arr = [[0 for _ in range(w)] for _ in range(h)]

for l, d, x, y in ldxy:
  x -= 1
  y -= 1
  for row in range(h):
    for col in range(w):
      if x == row and y == col:
        if d == 0:
          for i in range(l):
            arr[x][y+i] += 1
        if d == 1:
          for i in range(l):
            arr[x+i][y] += 1
for item in arr:
  print(*item)

코드 설명

  1. 입력으로 주어지는 변수들 (h, w, l, d, x, y)과 격자 크기에 맞게 0으로 채워진 배열(arr) 선언
  2. 격자는 막대를 놓을 때 마다 변환되므로 ldxy 기준 for Loop을 생성하고, 각 변수를 언패킹한 뒤 xy를 좌표에서 인덱스로 변환(-1)
    이 때, 문제에서 주어진 x가 행번호(열 데이터),y가 열번호(행 데이터)를 다루므로, 통상적인 [y][x]와 순서를 달리한다는 점에 유의
  3. 격자 데이터에 접근하기 위해 가로세로 크기만큼 for Loop 생성, x와 행, y와 열 번호가 일치할 때 d==0이면 가로데이터를, d==1이면 세로데이터를 l 크기만큼 반복하며 1씩 증가
  4. 별도 for문으로 변경한 데이터를 모두 언패킹하여 출력
profile
10년을 돌고 돌아 마침내 제자리를 찾은 문과 출신 Python 개발자의 인생기록장

0개의 댓글