본문 바로가기
Algorithm/프로그래머스풀이

[알고리즘 문제풀이] 프로그래머스 - 방문 길이 / JAVA(자바)

by 계범 2022. 3. 3.

https://programmers.co.kr/learn/courses/30/lessons/49994

 

코딩테스트 연습 - 방문 길이

 

programmers.co.kr

/**
    1. 명령어에 따른 이동
    
    2. 명령어가 좌표평면을 넘어가면 그 명령어는 무시
    
    3. 전체 명령어에 의해 새로 가본 좌표의 개수를 반환
    3-1) 현재좌표에서 이동방향 선을 가본것으로 체크
    3-2) 올라간좌표에서 출발좌표까지 선도 써본것으로 체크
**/

class Solution {
    public int solution(String dirs) {
        int answer = 0;
        
        int[][][] map = new int[11][11][4];
        
        int x = 5;
        int y = 5;
        for(char c : dirs.toCharArray()){
            int nx = 0, ny = 0; // 새로운 좌표
            int pos = 0; // 방향
            int npos = 0; // 역방향
            if(c == 'U'){
                nx = x-1;
                ny = y;
                pos = 0;
                npos = 1;
            }else if(c == 'D'){
                nx = x+1;
                ny = y;
                pos = 1;
                npos = 0;
            }else if(c == 'R'){
                nx = x;
                ny = y+1;
                pos = 2;
                npos = 3;
            }else{
                nx = x;
                ny = y-1;
                pos = 3;
                npos = 2;
            }
            
            if(0 <= nx && nx < 11 && 0 <= ny && ny < 11){ // 맵범위 안
                if(map[x][y][pos] == 0){ // 사용하지 않은 선
                    map[x][y][pos] = 1;
                    map[nx][ny][npos] = 1;
                    answer++;
                }
                x = nx;
                y = ny;
            }
        }
        
        return answer;
    }
}

댓글