Search
Duplicate

겉넓이 구하기

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

Memo

로직 설명

위에서 볼 때, 밑에서 볼 때 ⇒ 2 * N * M
옆에서 볼 때, 배열을 90도씩 회전시켜가며 동일한 로직 수행 ⇒ 바로 이전의 높이가 현재 높이보다 클 경우 계산 x (가리므로), 작을 경우 현재 높이를 이전 높이에서 빼줍니다.

Code

제출 날짜

@4/24/2021
import sys g_map = [] N, M = map(int, sys.stdin.readline().split()) tmp = [[0 for _ in range(max(M, N))] for _ in range(max(M, N))] for _ in range(N): a = list(map(int, sys.stdin.readline().split())) g_map.append(a) def rotate_list(): global N, M for j in range(M): for i in range(N - 1, -1, -1): tmp[j][N - 1 - i] = g_map[i][j] N,M = M,N ans = 2 * N * M #밑, 위에서 볼 때 for _ in range(4): for j in range(M): prev = 0 for i in range(N): if (g_map[i][j] > prev): ans += g_map[i][j] - prev prev = g_map[i][j] rotate_list() # 행렬 90도 회전 tmp, g_map = g_map, tmp print(ans)
Python
복사