set
으로 푸는 문제
curX
와 curY
초기화set
을 사용하였다.prePos
와 curPos
가 같을 테니까, 이는 제외해주고 prePos
와 curPos
를 오름차순 정렬 해주어 set
에 넣어준다.set
의 사이즈를 출력한다.#include <string>
#include <set>
#include <algorithm>
using namespace std;
int solution(string dirs) {
int answer = 0;
int curX = 0;
int curY = 0;
set<vector<pair<int,int>>> s;
for(int i=0;i<dirs.size();i++)
{
pair<int,int> prePos = {curX, curY};
if(dirs[i]=='U' && curY<5) curY++;
else if(dirs[i]=='D' && curY>-5) curY--;
else if(dirs[i]=='R' && curX<5) curX++;
else if(dirs[i]=='L' && curX>-5) curX--;
pair<int,int> curPos = {curX, curY};
if(prePos != curPos)
{
vector<pair<int,int>> tmp;
tmp.push_back(prePos);
tmp.push_back(curPos);
sort(tmp.begin(), tmp.end());
s.insert(tmp);
}
}
answer = s.size();
return answer;
}