본문 바로가기
알고리즘 풀이/백준

[백준 19568] 직사각형 (python)

by char_lie 2023. 3. 25.
반응형

https://www.acmicpc.net/problem/19568

 

19568번: 직사각형

당신이 만든 표에 적힌 수를 한 줄에 30개씩, 30줄로 출력하여라. 정확한 형식은 예제 출력을 참고하자.

www.acmicpc.net

직사각형 문제(python)

30 × 30 칸에 0 ~ 100000까지 숫자를 넣어서, 직사각형으로 잘랏을 때 1~50000까지 숫자를 만드는 문제

다른 분이 보여준 저격수..(?) 스코프 힌트를 보고 해결할 수 있었다

⚙️내가 푼 정답코드

table = [[0]*30 for _ in range(30)]

for i in range(15):
    table[15][14-i] = 1
    table[14-i][15] = 1*16
    table[15][15+i] = 1*16*16
    table[15+i][15] = 1*16*16*15
    table[15][15] = 0

for result in table:
    print(*result)

그림으로 보는 정답

📌문제 접근 포인트

1. 일단 입력을 받지 않는다. 답만 출력할 수 있도록 만들어주면 된다.
2. 내부에서 직사각형으로 잘랐을 때, 숫자가 1~50000까지 만들어 질 수 있게 구성해야한다.
3. 1씩 늘려나갈 수 있게 구성하려면 어떤 식으로 구성하면 좋을까? → n의 진수를 생각해보면 가령 12진수 쯤이라치면 12가 되는순간 10, 24가되는순간 20 이런식으로 표현될 수 있다. 이런 점에서 착안해서 문제를 해결해보자
4. 가운데를 기준으로, 왼쪽으로 직사각형 크기를 한칸씩 늘려가면 +1씩 늘어나고, 3번의 형태처럼 15까지 왼쪽끝에 도달하면 가운데로 돌아와서 위로 한칸늘리고, 다시 왼쪽으로 늘려가는 형태로 모양을 구상하면 5만까지 커버칠 수 있는 형태의 30 × 30의 리스트를 만들 수 있다.
반응형

댓글