알고리즘/문제 풀이

[Java/자바 프로그래머스] 방문길이

광규니 2022. 2. 4. 16:28
반응형

풀이

방법은 hashmap이나 set써도 될거같지만,

4차원 배열은 사용했습니다.

 

x, y, nx, ny를 방문처리하고

nx, ny, x, y 또한 양방향 방문처리를 했습니다.

 

class Solution {
    public int solution(String dirs) {
        int answer = 0;
        int x = 5;
        int y = 5;
        int[][][][] map = new int[11][11][11][11];

        int[] dx = {1, -1, 0, 0};
        int[] dy = {0, 0, 1, -1};
        for(int i = 0 ; i < dirs.length(); i++){
            char tmp = dirs.charAt(i);
            int dir = -1;
            if(tmp == 'U'){
                dir = 0;
            }
            else if(tmp == 'D'){
                dir = 1;
            }
            else if(tmp == 'R'){
                dir = 2;
            }
            else if(tmp == 'L'){
                dir = 3;
            }
            
            int nx = x + dx[dir];
            int ny = y + dy[dir];
            if(0 > nx || nx >= 11 || 0 > ny || ny >= 11) continue;
            if(map[x][y][nx][ny] == 0){
                map[x][y][nx][ny] = 1;
                map[nx][ny][x][y] = 1;
                answer++;
            }
            x = nx;
            y = ny; 
        }
        return answer;
    }
}
반응형