> 문제
문제 : [방문 길이]
> 문제풀이
이동했던 길은 좌표이동하면서 현재좌표와 다음좌표를 혼합하여 Set에 저장하는 방식으로 풀이 하였다.
import java.util.*;
class Solution {
static boolean check(int x, int y){
if(x>=0 && y>=0 && x<11 && y<11){
return true;
}else return false;
}
public int solution(String dirs) {
Set<String> set = new HashSet<>();
Map<Character, int[]> map = new HashMap<>();
map.put('U', new int[]{-1,0});
map.put('D', new int[]{1,0});
map.put('R', new int[]{0,1});
map.put('L', new int[]{0,-1});
int px = 5, py = 5;
for(int i=0; i<dirs.length(); i++){
char d = dirs.charAt(i);
int[] dir = map.get(d);
int dx = px + dir[0];
int dy = py + dir[1];
if(check(dx,dy)){
set.add(px+"/"+dx+"/"+py+"/"+dy);
set.add(dx+"/"+px+"/"+dy+"/"+py);
px = dx;
py = dy;
}
}
return set.size()/2;
}
}
문제 출처 : Programmers