파이썬 백준 2563번
브론즈1
https://www.acmicpc.net/problem/2563
문제 보기
2차원 배열을 활용하여 색종이로 평면을 덮는 문제
분류: 2차원 배열, 구현
문제 풀기
가로와 세로가 100, 100 인 2차원 배열을 만들고 모두 0으로 채워 넣는다.
그리고, 10 by 10 색종이가 위치하는 배열에 0을 1로 채워 넣는다.
2차원 배열로 각 색종이들의 포인트를 입력 받는다.
입력 받은 포인트를 하나씩 꺼내어 시작점에 위치 시킨다.
for xy in point_ls:
각각 10번씩 i 와 j 에 대해 중복 for 문을 돌리고,
for i in range(10):
for j in range(10):
색종이 구석 포인트를 시작으로 가로 i 만큼 세로 j 만큼 1 로 채워나간다.
paper[xy[0] + i][xy[1] + j] = 1
전체 100 by 100 의 2차원 배열에서 1차원 배열을 하나씩 꺼내어 1로 이루어진 전체 합을 구하고 이것을 모두 더해나간다.
totalsum = 0
for p in paper:
totalsum += sum(p)
totalsum 을 return 하여 결과를 도출한다.
코드 보기
import sys
inputdata = sys.stdin.readline
def fnBlackArea(point_ls):
paper = [[0] * 101 for _ in range(101)]
for xy in point_ls:
for i in range(10):
for j in range(10):
paper[xy[0] + i][xy[1] + j] = 1
# for p in paper: # test print
# print(p)
totalsum = 0
for p in paper:
totalsum += sum(p)
return totalsum
if __name__ == "__main__":
N = int(inputdata().strip())
point_ls = [list(map(int, inputdata().split())) for _ in range(N)]
# print(point_ls) # test print
result = fnBlackArea(point_ls)
print(result)
# 3
# 3 7
# 15 7
# 5 2
# 260
추가 하기
전체 종이가 20 by 20 이고
입력값이
2
3 7
5 2
로 주어졌을때의 모습.
import sys
inputdata = sys.stdin.readline
def fnBlackArea(point_ls):
paper = [[0] * 21 for _ in range(21)]
for xy in point_ls:
for i in range(10):
for j in range(10):
paper[xy[0] + i][xy[1] + j] = 1
for p in paper: # test print, 0 과 1 색종이 시각화
print(p)
totalsum = 0
for p in paper:
totalsum += sum(p)
return totalsum
if __name__ == "__main__":
N = int(inputdata().strip())
point_ls = [list(map(int, inputdata().split())) for _ in range(N)]
print(point_ls) # test print
result = fnBlackArea(point_ls)
print(result)
# 2
# 3 7
# 5 2
# [[3, 7], [5, 2]]
# [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
# [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
# [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
# [0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0]
# [0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0]
# [0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0]
# [0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0]
# [0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0]
# [0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0]
# [0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0]
# [0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0]
# [0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0]
# [0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0]
# [0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0]
# [0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0]
# [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
# [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
# [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
# [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
# [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
# [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
# 160
'공부하기 > 백준' 카테고리의 다른 글
[Python] 백준 풀기 11651 - 좌표 정렬하기 2 (0) | 2022.10.27 |
---|---|
[Python] 백준 풀기 3053 - 택시 기하학 (0) | 2022.10.26 |
[Python] 백준 풀기 7568 - 덩치 (0) | 2022.10.24 |
[Python] 백준 풀기 11650 - 좌표 정렬하기 (0) | 2022.10.23 |
[Python] 백준 풀기 2477 - 참외밭 (0) | 2022.10.22 |