๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด/๊ตฌํ˜„

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๊ณต์› ์‚ฐ์ฑ…

by syLim___ 2023. 9. 18.
728x90

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

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 


 

๋ฌธ์ œ ์ง€์‹œ๋Œ€๋กœ ์ฐฉ์‹คํžˆ ๊ตฌํ˜„ํ•˜๋ฉด ๋˜๋Š” ๋ฌธ์ œ์ด๋‹ค.

 

๋กœ๋ด‡ ๊ฐ•์•„์ง€๋Š” ๋ชฉํ‘œ ์นธ์œผ๋กœ ์ ํ”„ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ณ  ์นธ์„ ํ•˜๋‚˜ํ•˜๋‚˜ ๋ฐŸ์œผ๋ฉด์„œ ์ด๋™ํ•œ๋‹ค.

๋”ฐ๋ผ์„œ, ๋งค ๋ช…๋ น๋งˆ๋‹ค์˜ ์ด๋™ ๊ฒฝ๋กœ์ค‘์— 'X'๊ฐ€ ํ•˜๋‚˜๋ผ๋„ ์žˆ์œผ๋ฉด ์ด๋™ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์ ๋งŒ ์ž˜ ์ฒดํฌํ•˜๋ฉด ๋œ๋‹ค.

 


JAVA

class Solution {
    public int[] solution(String[] park, String[] routes) {
        int[] answer = new int[2];
        
        // ์‹œ์ž‘์  ์ฐพ๊ธฐ
        int x=0, y=0;
        for(int i=0; i<park.length; i++){
            for(int j=0; j<park[0].length(); j++){
                if (park[i].charAt(j)=='S'){
                    x = i;
                    y = j;
                    break;
                }
            }
        }
        
        int nx=0, ny=0;
        int dx=0, dy=0;
        for (String route : routes){
            String[] arr = route.split(" ");
            int dist = Integer.parseInt(arr[1]);
            switch(arr[0]){
                case "N":
                    dx = -1;
                    dy = 0;
                    break;
                case "S":
                    dx = 1;
                    dy = 0;
                    break;
                case "W":
                    dx = 0;
                    dy = -1;
                    break;
                case "E":
                    dx = 0;
                    dy = 1;
            }
            
            // ์ด๋™ ๊ฐ€๋Šฅ ์—ฌ๋ถ€ ํŒ๋‹จ
            boolean movable = true;
            int curX = x, curY = y;
            for(int i=0; i<dist; i++){
                
                nx = curX + dx;
                ny = curY + dy;
                if(nx < 0 || nx >= park.length || ny < 0 || ny >= park[0].length() || park[nx].charAt(ny) == 'X'){
                    movable = false;
                    break;
                }else{
                    curX = nx;
                    curY = ny;
                }
            }
            
            // ์ด๋™
            if (movable){
                x = curX;
                y = curY;
            }
            
        }
        
        answer[0] = x; answer[1] = y;
        return answer;
    }
}

 

728x90