오늘은 저번 포스팅에 이어 코드업 문제 한개 더 포스팅 하려고 한다.
문제는 아래와 같다.
입 출력 예시는 아래와 같다.
일단 문제를 보면 알겠지만, 세번째 줄 까지는 input을 이용하여야 한다.
첫 input은 격자판의 크기 (h*2)가 될 것이고,
두번째는 둘 막대기의 갯수 (n) 이 될 것이고,
세번째는 막대의길 (l), 방향 (d), 좌표 (x,y)가 될 것이다.
여기서 세번째 input의 방향에서 0은 가로, 1은 세로가 된다.
출력값은 격자판에서 막대기가 놓여진 곳은 숫자 1로 표현이 되고, 나머지는 0으로 표현이 되면 되는것이다.
정답코드 먼저 보자.
h, w = map(int, input().split())
shape = [[0] * w for _ in range(h)]
n = int(input())
for i in range(n):
l,d,x,y = map(int, input().split())
if d == 0:
for j in range(l):
shape[x-1][y-1+j] = 1
else:
for j in range(l):
shape[x-1+j][y-1] = 1
for i in range(h):
for j in range(w):
print(shape[i][j], end =' ')
print()
다시 한번 말하지만 코드를 내 스타일대로 내가 스스로 만드는 것도 중요하다.
하지만 많은 코드들을 보면서 이런식으로 구상을 해야하는구나 라는걸 느끼는게 더 중요하다고 생각한다.
첫 줄과 셋째줄의 input은 설명이 필요 없을걸로 생각된다.
shape = [[0] * w for _ in range(h)]
이 부분은 격자판을 만드는 코드이다. 격자판을 0으로 가득 채우는 코드이다. 예전 포스팅을 보신 분이라면 그때 당시에는 리스트안에 리스트를 만들어 넣었었지만 이번엔 그 코드를 한 문장에 표현을 하였다.
for i in range(n):
l,d,x,y = map(int, input().split())
if d == 0:
for j in range(l):
shape[x-1][y-1+j] = 1
else:
for j in range(l):
shape[x-1+j][y-1] = 1
제일 중요한 부분이다. 막대기를 두는 코드를 만드는건데.
만약 d == 0: , 즉 막대기가 가로라면 막대기의 길이 (l) 만큼 반복이 된다는 코드이다.
여기서 주의 할 점은 x가 세로길이, y가 가로길이 라는 것이다.
else 하단 부분은 막대기가 세로일때, 위의 반대이다.
'Programming > Python' 카테고리의 다른 글
예외처리 함수 (Try... Except 구문) - 파이썬 (Python) 문법 (7) | 2022.05.14 |
---|---|
컴퓨터와 가위바위보 하기 (for in 반복문 이용) - 파이썬 (Python) 문법 (4) | 2022.05.11 |
코드업 6095 바둑판에 흰돌놓기 - 파이썬 (Python) (2) | 2022.04.29 |
JSON (제이슨) 이란 무엇인가? 파이썬 기본 문법 (0) | 2022.04.27 |
파이썬 반복문 이용한 피라미드 만들기 02 (Python for in) (2) | 2022.04.25 |
댓글