[백준 2563 파이썬] 색종이 (실버 5, 2차원 배열)

배코딩·2023년 1월 2일
0

PS(백준)

목록 보기
110/118

알고리즘 유형 : 2차원 배열
풀이 참고 없이 스스로 풀었나요? : O

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




소스 코드(파이썬)

import sys
input = sys.stdin.readline

n = int(input())
board = [[0]*101 for _ in range(101)]

def attach_paper(x, y, board):
    for i in range(x, x+10):
        for j in range(y, y+10):
            board[i][j] = 1

for _ in range(n):
    x, y = map(int, input().split())
    attach_paper(x, y, board)

result = 0
for row in board:
    result += sum(row)
    
print(result)



풀이 요약

  1. 색종이에 해당하는 점 하나하나를 2차원 배열에서의 값 1로 표현하여, 2차원 배열의 값 1인 부분을 싹 다 더하면 넓이가 된다.

  1. 색종이 하나당 가로 또는 세로 방향으로 점이 10개 찍혀야한다. 왼쪽 아래 모서리를 기준으로 10개만큼 행/열 방향으로 값을 1로 채운다. (2차원 배열)

    예제에서는 두 번째 색종이의 가로를 5부터 15까지로 표현하였는데, 코드를 이런 식으로 짜면 색종이 넓이가 121이 되어버리므로 고려해서 코딩하자.



배운 점, 어려웠던 점

  • 왼쪽 아래 모서리를 기준으로 10개 만큼만 오른쪽/위 방향으로 나아가 2차원 배열 값을 채우면, 원래의 색종이들 간의 겹침 관계도 유효하고 넓이값도 알맞게 구할 수 있었다. 실험적으로 알게 된 것 같다.
profile
PS, 풀스택, 앱 개발, 각종 프로젝트 내용 정리 (https://github.com/minsu-cnu)

0개의 댓글