https://programmers.co.kr/learn/courses/30/lessons/49190
#include <string>
#include <vector>
#include <map>
using namespace std;
struct MOVE { int x, y; };
MOVE mv[8] = { {-1,0}, {-1,1}, {0,1}, {1,1}, {1,0}, {1,-1}, {0,-1}, {-1,-1} };
map<pair<int, int>, bool> edge;
map<pair<pair<int, int>, pair<int, int>>, bool> line;
int solution(vector<int> arrows) {
int answer = 0;
int movei = 0;
int movej = 0;
edge[{0, 0}] = true;
for (int i = 0; i < arrows.size(); i++) {
for (int k = 0; k < 2; k++) {
int tmp_movei = movei + mv[arrows[i]].x;
int tmp_movej = movej + mv[arrows[i]].y;
if (edge[{tmp_movei, tmp_movej}] == true && line[{ {movei, movej}, { tmp_movei,tmp_movej }}] == false) {
answer++;
}
line[{ {movei, movej}, { tmp_movei,tmp_movej }}] = true;
line[{ {tmp_movei, tmp_movej}, { movei,movej }}] = true;
edge[{tmp_movei, tmp_movej}] = true;
movei = tmp_movei;
movej = tmp_movej;
}
}
return answer;
}
'프로그래머스' 카테고리의 다른 글
사칙연산 C++ (0) | 2022.03.22 |
---|---|
단어 퍼즐 C++ (0) | 2022.03.22 |
지형 이동 C++ (0) | 2022.03.21 |
스티커 모으기 C++ (0) | 2022.03.19 |
가장 긴 팰린드롬 C++ (0) | 2022.03.19 |