아무튼 개발
article thumbnail
반응형

코드업 파이썬 6097번 풀이입니다.

 

https://codeup.kr/problem.php?id=6097 

 

[기초-리스트] 설탕과자 뽑기(py)

python언어기초100제v1.0 : @컴퓨터과학사랑, 전국 정보(컴퓨터)교사 커뮤니티/연구회 - 학교 정보(컴퓨터)선생님들과 함께 수업/방과후학습/동아리활동 등을 통해 재미있게 배워보세요. - 모든 내용

codeup.kr

 

문제

출처 : 코드업 6097번

부모님과 함께 놀러간 영일이는
설탕과자(설탕을 녹여 물고기 등의 모양을 만든 것) 뽑기를 보게 되었다.

길이가 다른 몇 개의 막대를 바둑판과 같은 격자판에 놓는데,

막대에 있는 설탕과자 이름 아래에 있는 번호를 뽑으면 설탕과자를 가져가는 게임이었다.
(잉어, 붕어, 용 등 여러 가지가 적혀있다.)

격자판의 세로(h), 가로(w), 막대의 개수(n), 각 막대의 길이(l),
막대를 놓는 방향(d:가로는 0, 세로는 1)과
막대를 놓는 막대의 가장 왼쪽 또는 위쪽의 위치(x, y)가 주어질 때,

격자판을 채운 막대의 모양을 출력하는 프로그램을 만들어보자.

 

 

코드

 

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

p = []
for i in range(h+1):
    p.append([])
    for j in range(w+1):
        p[i].append(0)

n = int(input())
for i in range(n):
    l, d, x, y = input().split()
    l = int(l)
    d = int(d)
    x = int(x)
    y = int(y)
    if d == 0:
        for j in range(l):
            p[x][y+j] = 1
    else:
        for j in range(l):
            p[x+j][y] = 1

for i in range(1, h+1):
    for j in range(1, w+1):
        print(p[i][j], end=' ')
    print()

 

 

코드 풀이

 

1) 격자판 생성하기

가로, 세로 길이 값을 받는다.

 

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

 

p = []
for i in range(h+1):
    p.append([])
    for j in range(w+1):
        p[i].append(0)

 

변수 p로 격자판 리스트를 생성한다.

격자판에서 (0, 0) 좌표도 포함이기 때문에 for문 범위 값에는 +1을 해줘야 한다!

 

 

 

2) 막대 모양 값 생성하기

막대를 놓을 개수인 n을 입력받는다.

n의 횟수에 따라 for문을 돌린다.


n = int(input())
for i in range(n):
    l, d, x, y = input().split()
    l = int(l)
    d = int(d)
    x = int(x)
    y = int(y)
    if d == 0:
        for j in range(l):
            p[x][y+j] = 1
    else:
        for j in range(l):
            p[x+j][y] = 1

 

막대의 길이에 따라 가려지는 좌표의 값을 1로 변경해야 한다. 따라서 l을 for문의 범위로 둔다.

d == 0은 가로로 막대를 놓아야 하는 경우이다.

주의할 점은 가로로 증가라는 것은 column이 증가한다는 뜻이므로 y의 인덱스에 변수 j를 넣는다.

else는 세로로 놓을 경우이므로, 반대로 입력해주면 된다.

 

 

 

3) 결과 출력하기


for i in range(1, h+1):
    for j in range(1, w+1):
        print(p[i][j], end=' ')
    print()

 

지난 코드업 6096번과 마찬가지로 중첩 for문을 통해 출력한다.

(0, 0) 좌표는 제외해야 하므로 1부터 h 또는 w에 +1 한 값을 범위로 잡는다.

 

 

반응형
profile

아무튼 개발

@릴쥬

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

profile on loading

Loading...