알고리즘
C++ 지뢰찾기
Chars4785
2018. 12. 28. 15:54
지뢰를 찾고
1. N,M 행렬 값 주고
2. col, row 위치를 주고
해당 위치에 지뢰가 있으면 "game over"
없다면 상하좌우 대각선 위치 확인해서 총 지뢰개수 출력
입력
9 8
4 5
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0
0 0 0 0 0 1 0 0
0 0 0 1 0 1 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
출력
4
#include <iostream>
#include <vector>
using namespace std;
int plane[100][100];
int dx[8] ={0,-1,-1,-1,0,1,1,1};
int dy[8] ={1,1,0,-1,-1,-1,0,1};
int main() {
int sum=0;
int planeCol,planeRow;
cin>>planeCol >>planeRow;
int col,row;
cin >>col >>row;
col--;
row--;
for(int i=0;i<planeCol;i++)
for(int j=0;j<planeRow;j++)
cin >> plane[i][j];
if(plane[col][row]==1)
{
cout<<"game over";
}else{
for(int i=0;i<8;i++)
{
sum += plane[col+dx[i]][row+dy[i]];
}
cout<<sum;
}
return 0;
}
상하 좌우를 확인할때 좋은 방법
상대 위치 배열을 사용해서 배열로 돌리는 방법이 있다. !!!
int dx[8] ={0,-1,-1,-1,0,1,1,1};
int dy[8] ={1,1,0,-1,-1,-1,0,1};
for(int i=0;i<8;i++)
{
sum += plane[col+dx[i]][row+dy[i]];
}