프로그래머스 구현

changho Youn·2023년 11월 14일
0

출처 https://school.programmers.co.kr/learn/courses/30/lessons/172928


소스코드

class Solution {
    public int[] solution(String[] park, String[] routes) {
        int x = park.length;
        int y = park[0].length();
        int [] startPos={0,0};
        //동서남북 정의하기
       char [][]map = new char[x][y];
        for(int i = 0 ; i< park.length;i++){
            map[i] = park[i].toCharArray();
            if(park[i].contains("S")){
                startPos[0]=i;
                startPos[1]=park[i].indexOf("S");
            }
        }
        for(String route: routes){
            String []temp = route.split(" ");
            char dir = temp[0].charAt(0);
            int size = Integer.parseInt(temp[1]);
            int nx = startPos[0];
            int ny = startPos[1];
            for(int i=0; i<size;i++){
                if(dir=='E')
                    ny++;
                if(dir=='W')
                    ny--;
                if(dir=='S')
                    nx++;
                if(dir=='N')
                    nx--;
                if(nx<0||nx>=x||ny<0||ny>=y) break;
                if(map[nx][ny]=='X') break;
               if(i== size-1){
                   startPos[0]=nx;
                   startPos[1]=ny;
                   
               }
            }
        }
            
    
        int []answer = {startPos[0],startPos[1]};
        return answer;
    }
}

느낀점 : 당연스럽게 bfs로 풀고싶은 문제였고 방향을 탐색할때도 for문으로 routes 배열을 순회하며 방향이 일치했을 때 처리해주려 했지만, 코드가 너무 지저분해져서 if문으로 구분하여 코드를 리팩토링 하였다.

profile
BackEnd Developer ChangDDAO입니다.🐌

0개의 댓글

관련 채용 정보