알고리즘

C++ 룩 찾기

Chars4785 2019. 1. 11. 12:38

입력


8줄에 걸쳐 8x8 체스판의 상태가 주어진다. 이때 0은 기물이 없는 상태이고, 1은 알랩이의 킹을 의미하고, 2는 상대의 룩을 의미하며 3은 그 외 다른 기물들을 의미한다. (킹은 하나만 존재하며, 상대의 룩은 최대 2개까지 있을 수 있다. 그 외 기물들은 최대 29개까지 있을 수 있다.)


출력


킹이 룩에게 잡힐 가능성이 있으면 1, 아니면 0을 출력한다.



약간 무식하게 풀었음,,,



0 3 0 0 0 0 0 0
3 1 0 0 0 0 2 0
0 3 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0



#include <iostream>
#include <vector>

using namespace std;



int main()
{
int array[8][8];
int col,row;
bool flag = false;
int result =0;
for(int i=0;i<8;i++)
{
for(int j=0;j<8;j++)
{
cin>>array[i][j];
if(array[i][j]==1)
{
col = i;
row = j;
}
}
}

//2,1
for(int i=row;i<8;i++)
{
if(array[col][i] == 2)
{
flag = true;
result = 1;
break;
}else if(array[col][i] == 3 || flag ){
break;
}
}

for(int i=row;i>=0;i--)
{
if(array[col][i] == 2)
{
flag = true;
result = 1;
break;
}else if(array[col][i] == 3|| flag ){
break;
}
}

for(int i=col;i<8;i++)
{
if(array[i][row] == 2)
{
flag = true;
result = 1;
break;
}else if(array[i][row] == 3|| flag ){
break;
}
}

for(int i=col;i>=0;i--)
{
if(array[i][row] == 2)
{
flag = true;
result = 1;
break;
}else if(array[i][row] == 3|| flag ){
break;
}
}

cout<< result;


return 0;
}



무식한 방법 먼저 해보고 정리해 보기 !!!