코드업 기초 100제 문제 098
# 설탕과자 뽑기
# **서론**
# 부모님과 함께 유원지에 놀러간 영일이는
# 설탕과자(설탕을 녹여 물고기 등의 모양을 만든 것) 뽑기를 보게 되었다.
# 길이가 다른 몇 개의 막대를 바둑판과 같은 격자판에 놓는데,
# 막대에 있는 설탕과자 이름 아래에 있는 번호를 뽑으면 설탕과자를 가져가는 게임이었다.
# (잉어, 붕어, 용 등 여러 가지가 적혀있다.)
# 대체 텍스트
# 격자판의 세로(h), 가로(w), 막대의 개수(n), 각 막대의 길이(l),
# 막대를 놓는 방향(d:가로는 0, 세로는 1)과
# 막대를 놓는 막대의 가장 왼쪽 또는 위쪽의 위치(x, y)가 주어질 때,
# 격자판을 채운 막대의 모양을 출력하는 프로그램을 만들어보자.
# 입력
# 첫 줄에 격자판의 세로(h), 가로(w) 가 공백을 두고 입력되고,
# 두 번째 줄에 놓을 수 있는 막대의 개수(n)
# 세 번째 줄부터 각 막대의 길이(l), 방향(d), 좌표(x, y)가 입력된다.
# [입력값의 정의역]
# 1 <= w, h <= 100
# 1 <= n <= 10
# d = 0 or 1
# 1 <= x <= 100-h
# 1 <= y <= 100-w
# 5 5
# 3
# 2 0 1 1
# 3 1 2 3
# 4 1 2 5
# 출력
# 모든 막대를 놓은 격자판의 상태를 출력한다.
# 막대에 의해 가려진 경우 1, 아닌 경우 0으로 출력한다.
# 단, 각 숫자는 공백으로 구분하여 출력한다.
# 1 1 0 0 0
# 0 0 1 0 1
# 0 0 1 0 1
# 0 0 1 0 1
# 0 0 0 0 1
소스
더보기
h, w = map(int, input().split())
board = [[0 for _ in range(h)] for _ in range(w)]
n = int(input())
for _ in range(n):
l, d, x, y = map(int, input().split())
if d:
for i in range(l):
board[x-1+i][y-1] = 1
else:
for i in range(l):
board[x-1][y+i-1] = 1
for brd in board:
print(*brd)
이문제는 2중 배열을 주고 입력값에 따라 환경이 어떻게 변하는지에 대한 문제입니다. 문제는 좌표를 하나만 바꿔도 주변 상황 또한 바뀌기 때문에 2중 반복문을 사용하여 바깥 반복문에서는 n번만큼 입력을 받고 d(방향)에 따라 다른 반복문을 줍니다. 그 반복문에서는 l(길이)만큼 반복문을 반복하여 board를 바꿔주면 끝입니다.
'파이썬 > 코트업 기초 100제' 카테고리의 다른 글
코드업 기초 100제 문제 099 (0) | 2022.02.08 |
---|---|
코드업 기초 100제 문제 097 (0) | 2022.02.08 |
코드업 기초 100제 문제 096 보너스 (0) | 2022.02.08 |
코드업 기초 100제 문제 096 (0) | 2022.02.08 |
코드업 기초 100제 문제 095 (0) | 2022.02.07 |