문제링크
https://www.acmicpc.net/problem/16931
코드 제출 기록 (메모리 및 시간)
제출 날짜
@4/23/2021
메모리
123532 KB
시간
132 ms
메모
•
문제풀이
겉넓이를 구하기 위해서는 입체도형의 up, down, front, back, left, right 에서 보이는 사각형들의 합을 구하면 된다
up, down = N * M
left, right = 1 ~ N 에서 맨 앞 블록 높이 + (j번째 블록높이 - (j-1)번째 블록높이) → 양수일때만
front, back = 1 ~ M 에서 맨 앞 블록 높이 + (i번째 블록높이 - (i-1)번째 블록높이) → 양수일때만
Code
N, M = map(int, input().split())
arr = [list(map(int, input().split())) for _ in range(N)]
up = N * M
left = 0
for i in range(N):
for j in range(M):
if j == 0:
left += arr[i][j]
else:
if arr[i][j-1] < arr[i][j]:
left += arr[i][j] - arr[i][j-1]
front = 0
for j in range(M):
for i in range(N):
if i == 0:
front += arr[i][j]
else:
if arr[i-1][j] < arr[i][j]:
front += arr[i][j] - arr[i-1][j]
answer = 2 * (up + left + front)
print(answer)
Python
복사