Search
Duplicate
🥈

겉넒이 구하기

주차
17
문제번호
16931
언어
Python
티어
실버
유형
구현
nj_Blog
O
nj_상태
완료
이해도
풀이
사람
이해도 2
13 more properties

문제링크

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
복사

참고