[Silver II] 겉넓이 구하기 - 16931
분류
기하학, 3차원 기하학, 구현
문제 설명
크기가 N×M인 종이가 있고, 종이는 1×1크기의 칸으로 나누어져 있다. 이 종이의 각 칸 위에 1×1×1 크기의 정육면체를 놓아 3차원 도형을 만들었다.
종이의 각 칸에 놓인 정육면체의 개수가 주어졌을 때, 이 도형의 겉넓이를 구하는 프로그램을 작성하시오.
위의 그림은 3×3 크기의 종이 위에 정육면체를 놓은 것이고, 겉넓이는 60이다.
입력
첫째 줄에 종이의 크기 N, M이 주어진다. 둘째 줄부터 N개의 줄에는 종이의 각 칸에 놓인 정육면체의 수가 주어진다.
출력
첫째 줄에 도형의 겉넓이를 출력한다.
import sys
input = sys.stdin.readline
N, M = map(int, input().split())
blocks = [list(map(int, input().split())) for _ in range(N)]
top = N * M
left = 0
for i in range(N):
left += blocks[i][0]
for j in range(1, M):
if blocks[i][j] > blocks[i][j - 1]:
left += blocks[i][j] - blocks[i][j - 1]
front = 0
for i in range(M):
front += blocks[0][i]
for j in range(1, N):
if blocks[j][i] > blocks[j - 1][i]:
front += blocks[j][i] - blocks[j - 1][i]
result = (top + left + front) * 2
print(result)
'Algorithm > BAEKJOON' 카테고리의 다른 글
[백준 / Python 파이썬] 15787번 - 기차가 어둠을 헤치고 은하수를 (0) | 2023.06.15 |
---|---|
[백준 / Python 파이썬] 2641번 - 다각형그리기 (0) | 2023.06.15 |
[백준 / Python 파이썬] 26091번 - 현대모비스 소프트웨어 아카데미 (0) | 2023.06.13 |
[백준 / Python 파이썬] 6503번 - 망가진 키보드 (0) | 2023.06.13 |
[백준 / Python 파이썬] 25822번 - 2000문제 푼 임스 (0) | 2023.06.13 |