[프로그래머스] Level3 - 방문 길이

 
by 박신종

> 문제

문제 : [방문 길이]



> 문제풀이

이동했던 길은 좌표이동하면서 현재좌표와 다음좌표를 혼합하여 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