[백준] 2563번 색종이 . python

sun1·2023년 3월 3일
0

im_test

목록 보기
11/22
post-thumbnail

문제

' 2563번 색종이 '
https://www.acmicpc.net/problem/2563

풀이

조건

  • 가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 붙인다.
  • 첫 번째 자연수는 색종이의 왼쪽 변과 도화지의 왼쪽 변 사이의 거리이고, 두 번째 자연수는 색종이의 아래쪽 변과 도화지의 아래쪽 변 사이의 거리이다. 즉, 첫번째 수는 x, 두번째 수는 y를 뜻한다.
  • 색종이가 도화지 밖으로 나가는 경우는 없다.

풀이 순서

  • 흰색 도화지 영역 배열을 만들어 준다.
  • 입력값들을 받아 모든 점을 순회하면서 색종이가 붙여진 범위에는 표시해둔다.
  • 표시해둔 모든 영역의 수를 더해준다.

코드

Python

N = int(input())
visit = [[False for _ in range(101)] for _ in range(101)]  # 흰색 도화지 배열

for _ in range(N):
    h, v = map(int, input().split())   #가로, 세로 입력값
    for i in range(10):  #색종이는 가로,세로 10*10 크기이다.
        for j in range(10):
            visit[h + i][v + j] = True  # 색종이 영역 표시

total = 0
for i in range(101):  # 표시한 모든 수 더해주기
    total += visit[i].count(True)  

print(total)

다른 방법

N = int(input())
# 흰색 도화지
board = [[0] * 101 for _ in range(101)]
for _ in range(N):
    x, y = map(int, input().split())
    # 색종이가 정사각형의 10x10
    for i in range(x, x + 10):
        for j in range(y, y + 10):
            board[i][j] = 1

cnt = 0  # 색종이 영역 구하기
for i in range(1, 101):
    for j in range(1, 101):
        if board[i][j] == 1:
            cnt += 1
print(cnt)

0개의 댓글