[Baekjoon] 겉넓이 구하기
Updated:
문제
크기가 N×M인 종이가 있고, 종이는 1×1크기의 칸으로 나누어져 있다. 이 종이의 각 칸 위에 1×1×1 크기의 정육면체를 놓아 3차원 도형을 만들었다.
종이의 각 칸에 놓인 정육면체의 개수가 주어졌을 때, 이 도형의 겉넓이를 구하는 프로그램을 작성하시오.
위의 그림은 3×3 크기의 종이 위에 정육면체를 놓은 것이고, 겉넓이는 60이다.
입력
첫째 줄에 종이의 크기 N, M이 주어진다. 둘째 줄부터 N개의 줄에는 종이의 각 칸에 놓인 정육면체의 수가 주어진다.
출력
첫째 줄에 도형의 겉넓이를 출력한다.
예제
Example 1:
Input:
1 1
1
Output:
6
Example 2:
Input:
3 3
1 3 4
2 2 3
1 2 4
Output:
60
조건
시간 제한 : 1초
메모리 제한 : 512 MB
풀이과정
풀이 1
n, m = map(int, input().split())
arr = []
for _ in range(n):
arr.append(list(map(int, input().split())))
ans = [[2]*m for _ in range(n)]
dx = [0, 1, 0, -1]
dy = [1, 0, -1, 0]
for i in range(n):
for j in range(m):
for k in range(4):
ni = i + dx[k]
nj = j + dy[k]
if 0 <= ni <= n-1 and 0 <= nj <= m-1:
if arr[ni][nj] > arr[i][j]:
ans[i][j] += (arr[ni][nj] - arr[i][j])
else:
ans[i][j] += arr[i][j]
res = 0
for a in ans:
res += sum(a)
print(res)
Leave a comment