본문 바로가기
코딩테스트/문제풀이 팁

[공원산책] 좌표표현

by asdft 2024. 3. 24.

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

 

 

  가로 길이
W ( sx )
   세로 길이  H ( sy ) ( 0 , 0 ) ( 0 , 1 ) ( 0 , 2 )
( 1 , 0 )    
( 2 , 0 )   ( H-1, W-1 )

 

                          좌표 표현 : (sy, sx)

 

class Solution {
    public int[] solution(String[] park, String[] routes) {
        int sx = 0; // 이동 후 x좌표
        int sy = 0; // 이동 후 y좌표
        
        char[][] arr = new char[park.length][park[0].length()];
        
        for(int i=0;i<park.length;i++){
            arr[i]=park[i].toCharArray();   // String -> char 쪼개서 넣음. arr[0]안에 arr[0][i]위치에 넣음.
            
            if(park[i].contains("S")){
                sy = i;
                sx=park[i].indexOf("S");
            }
        }
        
        for(String r : routes){
            String dir = r.split(" ")[0];
            int len = Integer.valueOf(r.split(" ")[1]);

            int nx = sx;
            int ny = sy;
            
            for(int i=0;i<len;i++){
                if(dir.equals("E")){    //동
                    nx++;
                }
                if(dir.equals("W")){    //서
                    nx--;
                }
                if(dir.equals("S")){	//남
                    ny++;
                }
                if(dir.equals("N")){	//북
                    ny--;
                }
                if(nx>=0 && ny>=0 && nx<arr[0].length && ny<arr.length){
                    if(arr[ny][nx] == 'X'){
                        break;
                    }
                    if(i==len-1){
                        sx = nx;
                        sy = ny;
                    }
                }
            }
        }
        
        int[] answer = {sy, sx};
       
        return answer;
    }
}