akjfal

[Programmers] 방문 길이 본문

알고리즘/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;
    }
}

.

구현 문제풀이에 정말 괜찬은 문제라고 생각한다. 쉬운편이다.

Comments