[프로그래머스] 거리두기확인하기
#include <string>
#include <vector>
#include <queue>
using namespace std;
int dx[] = { 1, 2, -1,-2, 0, 0, 0, 0, 1, -1, 1, -1 };
int dy[] = { 0, 0, 0, 0, 1, 2, -1, -2, 1, 1, -1, -1 };
struct Pos { int x, y; };
int CheckRule(vector<vector<string>> places, Pos pPos)
{
vector<Pos> peoples;
Pos checkPos;
int dst;
for (int i = 0; i < 12; i++)
{
checkPos.x = pPos.x + dx[i];
checkPos.y = pPos.y + dy[i];
dst++;
if (checkPos.x < 0 || checkPos.x > 5)continue;
if (checkPos.y < 0 || checkPos.y > 5)continue;
string object = places[checkPos.x][checkPos.y];
if (dst >= 2)dst = 0;
if (object == "X") continue;
if (object == "P") return 1;
}
}
vector<int> solution(vector<vector<string>> places)
{
vector<int> answer;
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
if (places[i][j] == "P");
Pos pPos;
pPos.x = i;
pPos.y = j;
answer.push_back(CheckRule(places, pPos));
}
}
return answer;
}
처음 검사에서 사람들을 추려내고
그 기준 거리가 2인 위치들을 검사한다
그 길에 X 가 있으면 검색을 멈춘다
P가 있으면 1을 반환한다