프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이방법
간선 방문 체크를 통해 방문한 적이 있다면 continue, 방문한 적이 없다면 answer++해준다.
단, 방문 체크 시 (A , B)와 (B, A)는 동일한 간선이므로 둘 다 체크해주어야한다.
#include <string>
#include <map>
using namespace std;
int solution(string dirs) {
int answer = 0;
map<pair<pair<int, int>, pair<int, int>>, bool> visited;
int posX = 5;
int posY = 5;
for(int i = 0; i < dirs.length(); i++) {
int startX = posX;
int startY = posY;
if(dirs[i] == 'U') {
if(posY + 1 > 10) continue;
posY++;
}
else if(dirs[i] == 'D') {
if(posY - 1 < 0) continue;
posY--;
}
else if(dirs[i] == 'R') {
if(posX + 1 > 10) continue;
posX++;
}
else {
if(posX - 1< 0) continue;
posX--;
}
if(visited[make_pair(make_pair(startX, startY), make_pair(posX, posY))] == true)
continue;
visited[make_pair(make_pair(startX, startY), make_pair(posX, posY))] = true;
visited[make_pair(make_pair(posX, posY), make_pair(startX, startY))] = true;
answer++;
}
return answer;
}
'프로그래머스 > 2레벨' 카테고리의 다른 글
점 찍기/C++ (0) | 2023.02.08 |
---|---|
오픈채팅방/C++ (0) | 2023.02.08 |
소수 찾기/c++ (0) | 2023.02.03 |
큰 수 만들기/C++ (0) | 2023.02.03 |
하노이의 탑/C++ (0) | 2023.02.03 |