➰ 취업준비/알고리즘 문제풀이

[Python][백준][16931] 겉넓이 구하기 (구현)

 사과개발자 2021. 4. 26. 22:49

🍋 문제링크

https://www.acmicpc.net/problem/16931

🍎 코드 제출 기록 (메모리 및 시간)

메모리 : 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)

 

반응형