-
[BOJ]백준 16931번: 겉넓이 구하기Problem Solving/BOJ(백준) 2021. 2. 5. 00:47
백준의 겉넓이 구하기 문제 기하적인 문제이다
각 칸의 넓이를 1이라 했을 때, 도형의 겉넓이를 구하는 문제이다
이 때, 그림의 흰색 칸은 위에서 투시했을 때의 위쪽 면의 겉넓이이다.
밑에서 봤을 때에도 동일하므로 초기의 겉넓이 값은 N*M*2이다
그리고 옅은 주황색 면을 보면, 요철이 많지만 앞에서 투시해서 봤을 때 반대편에서 봤을 때랑 겉넓이가 같음을 알 수 있다.
따라서 옅은 주황색 면의 겉넓이를 구해준 뒤, *2 해준다.
짙은 주황색 면도 마찬가지로, 오른쪽에서 봤을 때랑 왼쪽에서 봤을 때 겉넓이가 같으므로 *2 해준다.
#include <cstdio> int main() { int n, m,arr[105][105],ans; scanf("%d%d", &n, &m); ans=n*m; for (int i = 1; i <= n; i++) { int sum = 0; for (int j = 1; j <= m; j++) { scanf("%d", &arr[i][j]); if (arr[i][j] > arr[i][j - 1])sum += arr[i][j] - arr[i][j - 1]; } ans += sum; } for (int j = 1; j <= m; j++) { int sum = 0; for (int i = 1; i <= n; i++) if (arr[i][j] > arr[i-1][j])sum += arr[i][j] - arr[i-1][j]; ans += sum; } printf("%d", ans*2); return 0; }
'Problem Solving > BOJ(백준)' 카테고리의 다른 글
[BOJ]백준 17135번: 캐슬디펜스(Java)/시뮬레이션 (0) 2021.02.20 [BOJ]백준 1405번: 미친 로봇 (0) 2021.02.07 [BOJ]백준 17413번: 단어 뒤집기 2 (0) 2021.01.30 [BOJ]백준 1442번: 벽 부수고 이동하기 2/BFS (0) 2021.01.20 [BOJ]백준 1600번: 말이 되고픈 원숭이/BFS (0) 2021.01.20