반응형
높이를 기준으로 높아질 때와 낮아질 때를 구분해서 활주로를 건설할 수 있는가 없는가 분석하는 로직을 짜면 됨.
#include<iostream>
#include<string.h>
using namespace std;
int arr[20][20];
bool visit[20];
int N, X;
int main(int argc, char** argv)
{
int test_case;
int T;
cin >> T;
/*
여러 개의 테스트 케이스가 주어지므로, 각각을 처리합니다.
*/
for (test_case = 1; test_case <= T; ++test_case)
{
cin >> N >> X;
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
{
cin >> arr[i][j];
}
}
int count = 0;
//가로 행
for (int i = 0; i < N; i++)
{
memset(visit, 0, sizeof(visit));
int cur = arr[i][0];
bool flag = true;
for (int j = 1; j < N; j++)
{
if (arr[i][j] > cur + 1 || arr[i][j] < cur - 1)
{
flag = false;
break;
}
if (arr[i][j] == cur + 1)
{
int num = 0;
for (int k = j - 1; k >= 0; k--)
{
if (num >= X)
{
break;
}
if (arr[i][k] == cur && !visit[k])
{
visit[k] = true;
num++;
}
else
{
break;
}
}
cur++;
if (num < X)
{
flag = false;
break;
}
}
else if (arr[i][j] == cur - 1)
{
int num = 0;
for (int k = j; k < N; k++)
{
if (num >= X)
{
break;
}
if (arr[i][k] == cur - 1 && !visit[k])
{
visit[k] = true;
num++;
}
else
{
break;
}
}
cur--;
if (num < X)
{
flag = false;
break;
}
}
}
if (flag)
{
count++;
}
}
//세로 행
for (int j = 0; j < N; j++)
{
memset(visit, 0, sizeof(visit));
int cur = arr[0][j];
bool flag = true;
for (int i = 0; i < N; i++)
{
if (arr[i][j] > cur + 1 || arr[i][j] < cur - 1)
{
flag = false;
break;
}
if (arr[i][j] == cur + 1)
{
int num = 0;
for (int k = i - 1; k >= 0; k--)
{
if (num >= X)
{
break;
}
if (arr[k][j] == cur && !visit[k])
{
visit[k] = true;
num++;
}
else
{
break;
}
}
cur++;
if (num < X)
{
flag = false;
break;
}
}
else if (arr[i][j] == cur - 1)
{
int num = 0;
for (int k = i; k < N; k++)
{
if (num >= X)
{
break;
}
if (arr[k][j] == cur - 1 && !visit[k])
{
visit[k] = true;
num++;
}
else
{
break;
}
}
cur--;
if (num < X)
{
flag = false;
break;
}
}
}
if (flag)
{
count++;
}
}
cout << "#" << test_case << " " << count << endl;
}
return 0;//정상종료시 반드시 0을 리턴해야합니다.
}
반응형
'Algorithm' 카테고리의 다른 글
1223. [S/W 문제해결 기본] 6일차 - 계산기2 (0) | 2020.04.14 |
---|---|
1258. [S/W 문제해결 응용] 7일차 - 행렬찾기 (0) | 2020.04.13 |
[2020카카오공채] 가사 검색 (0) | 2020.04.10 |
백준 5397번 키로거 (0) | 2020.04.09 |
2115. [모의 SW 역량테스트] 벌꿀채취 (0) | 2020.04.08 |