오답노트
[시뮬레이션] BOJ 16931번 겉넓이 구하기 본문
https://www.acmicpc.net/problem/16931
- 문제 파악
NxM 의 배열이 주어지고 각 배열에는 10 미만의 자연수와 0이 주어진다. 각 숫자는 정육면체가 쌓인 개수를 의미하는데 이때 겉넓이를 출력하라
- 정답
#include "bits/stdc++.h"
using namespace std;
int arr[102][102];
unsigned long long ans;
int main()
{
int n, m;
cin >> n >> m;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
cin >> arr[i][j];
}
}
int dx[] = { 0,0,1,-1 };
int dy[] = { 1,-1,0,0 };
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
int ntmp = 2; // 위 아래에서 볼때
for (int k = 0; k < 4; k++)
{
int nx = j + dx[k];
int ny = i + dy[k];
bool bCheck = false;
if (nx < 0 || nx >= m)
{
ntmp += arr[i][j];
bCheck = true;
}
if (ny < 0 || ny >= n)
{
ntmp += arr[i][j];
bCheck = true;
}
if (arr[i][j] > arr[ny][nx] && !bCheck)
ntmp += (arr[i][j] - arr[ny][nx]);
}
ans += ntmp;
}
}
cout << ans;
}
'C,C++ > 코딩테스트' 카테고리의 다른 글
프로그래머스 1단계 - 소수 찾기 (0) | 2022.05.26 |
---|---|
[시뮬레이션] BOJ 16967번 배열 복원하기 (0) | 2022.05.26 |
[시뮬레이션] BOJ 16927 배열 돌리기 2 - 오답노트 (0) | 2022.05.26 |
[시뮬레이션] BOJ 16926번 배열 돌리기 1 (0) | 2022.05.25 |
[시뮬레이션] BOJ 16935번 배열 돌리기 3 (0) | 2022.05.24 |