알고리즘/programmers
[Programmers] 방문 길이
akjfal
2021. 6. 22. 13:14
// 좌표평면 길이는 고정
// 좌표평면을 벗어나는 것은 무시
// 처음 가는 길을 구한다.
// hashmap에 a -> b 이동 좌표를 적는다.
// b -> a도 같이 넣는다.
// map.size를 구한다.
import java.util.HashMap;
class Solution {
public int solution(String dirs) {
int answer = 0;
int startY = 0, startX = 0;
HashMap<String, Integer> map = new HashMap<>();
for(String m : dirs.split("")){
int arriveY = moveY(startY, m);
int arriveX = moveX(startX, m);
if(isMove(arriveY, arriveX)){
String go = String.valueOf(startY) + String.valueOf(startX) + String.valueOf(arriveY) + String.valueOf(arriveX);
String reverse = String.valueOf(arriveY) + String.valueOf(arriveX) + String.valueOf(startY) + String.valueOf(startX);
map.put(go, 0);
map.put(reverse, 0);
startY = arriveY;
startX = arriveX;
}
}
answer = map.size()/2;
return answer;
}
public boolean isMove(int y, int x){
if(y > 5 || y < -5 || x > 5 || x < -5)
return false;
return true;
}
public int moveY(int y, String move){
switch(move){
case "U":{
return y-1;
}
case "R":{
return y;
}
case "D":{
return y+1;
}
case "L":{
return y;
}
}
return y;
}
public int moveX(int x, String move){
switch(move){
case "U":{
return x;
}
case "R":{
return x+1;
}
case "D":{
return x;
}
case "L":{
return x-1;
}
}
return x;
}
}
.
구현 문제풀이에 정말 괜찬은 문제라고 생각한다. 쉬운편이다.