๊ธฐ๋ก๋ฐฉ

Lv.1 : ๊ณต์› ์‚ฐ์ฑ… ๋ณธ๋ฌธ

CodingTest/Java

Lv.1 : ๊ณต์› ์‚ฐ์ฑ…

Soom_1n 2023. 4. 26. 14:49

๐Ÿ‘‰ ๋ฌธ์ œ๋งํฌ

 

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

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

programmers.co.kr



๐Ÿ”ธ ๋ฌธ์ œ ๋ถ„์„ ๐Ÿ”ธ

  • ๋กœ๋ด‡, ๊ธธ, ์žฅ์• ๋ฌผ์˜ ์ •๋ณด๊ฐ€ ๋‹ด๊ธด ๋งต ์ •๋ณด์™€ ๋กœ๋ด‡์˜ ์ด๋™ ๋ช…๋ น์ด ์ฃผ์–ด์ง„๋‹ค.
    • ์ฐจ๋ก€๋กœ ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•ด ๋กœ๋ด‡์„ ์ด๋™์‹œํ‚จ๋‹ค.
    • ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ–ˆ์„ ๋•Œ, ๋กœ๋ด‡์ด ๋งต์„ ๋ฒ—์–ด๋‚˜๊ฑฐ๋‚˜, ์žฅ์• ๋ฌผ์— ๊ฑธ๋ฆฐ๋‹ค๋ฉด ๊ทธ ๋ช…๋ น์„ ๋ฌด์‹œํ•œ๋‹ค.
    • ์ตœ์ข… ๋กœ๋ด‡ ์œ„์น˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๐Ÿ”ธ ์ฝ”๋“œ ๐Ÿ”ธ

import java.util.HashMap;
import java.util.StringTokenizer;

class Solution {
    public int[] solution(String[] park, String[] routes) {
        int R = park.length;
        int C = park[0].length();
        char[][] map = new char[R][C];
        int r = 0, c = 0;
        
        for(int i = 0; i < R; i++) {
            for(int j = 0; j < C; j++) {
                char ch = park[i].charAt(j);
                if(ch == 'S') {
                    r = i;
                    c = j;
                    map[i][j] = 'O';
                } else {
                    map[i][j] = ch;
                }
            }
        }
        
        int[] dx = {-1,0,1,0};
        int[] dy = {0,1,0,-1};
        
        HashMap<String, Integer> route = new HashMap<>();
        route.put("N", 0);
        route.put("E", 1);
        route.put("S", 2);
        route.put("W", 3);
        
        for(String s : routes) {
            StringTokenizer st = new StringTokenizer(s);
            int d = route.get(st.nextToken());
            int len = Integer.parseInt(st.nextToken());
            
            int x = r;
            int y = c;
            boolean flag = true;
            
            for(int i = 0; i < len; i++) {
                x += dx[d];
                y += dy[d];
                if(x < 0 || x >= R || y < 0 || y >= C || map[x][y] == 'X') {
                    flag = false;
                    break;
                }
            }
            
            if(flag) {
                r = x;
                c = y;
            }
        }
        
        return new int[] {r, c};
    }
}

๐Ÿ”ธ ์ฝ”๋“œ ํ•ด์„ ๐Ÿ”ธ

  • ๋งต ์ •๋ณด๋ฅผ 2์ฐจ์› char ๋ฐฐ์—ด map์— ์ €์žฅํ•œ๋‹ค.
  • N, E, S, W ์— ๋”ฐ๋ฅธ 4 ๋ฐฉํ–ฅ์„ HashMap์œผ๋กœ ์ธ๋ฑ์Šคํ™” ์‹œํ‚จ๋‹ค.
    • dx, dy๋ฅผ ํ†ตํ•ด ๋ธํƒ€ ๋ฐฉํ–ฅ ์ „ํ™˜์— ์‚ฌ์šฉํ•œ๋‹ค.
  • ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•˜๋ฉฐ ์žฅ์• ๋ฌผ์— ๊ฑธ๋ฆฌ๊ฑฐ๋‚˜ ๋งต์„ ๋ฒ—์–ด๋‚˜๋ฉด ๊ทธ ๋ช…๋ น์„ ์ทจ์†Œํ•˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ์œ„์น˜๋ฅผ ์ด๋™์‹œํ‚จ๋‹ค.
  • ์ตœ์ข… ์œ„์น˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๐Ÿ”ธ end ๐Ÿ”ธ

  • 4๋ฐฉํ–ฅ์ด N, E, S, W๋กœ ์ฃผ์–ด์ ธ์„œ 4๋ฐฉํ–ฅ ๋ธํƒ€ ์ธ๋ฑ์Šค ๋ณ€ํ™˜์„ ์–ด๋–ป๊ฒŒ ํ• ์ง€ ๊ณ ๋ฏผํ•˜๋‹ค Map์„ ์ด์šฉํ•ด ๋ดค๋‹ค.
    • ๋‹ค๋ฅธ ๋ฉ”์„œ๋“œ๋ฅผ ๋งŒ๋“ค์ง€ ์•Š์œผ๋ ค๊ณ  ํ•œ ๊ฒƒ์ธ๋ฐ, ๋‹ค๋ฅธ ํ’€์ด๋ฅผ ๋ณด๋‹ˆ ๋ฉ”์„œ๋“œ๋ฅผ ๋งŒ๋“ค๊ณ  if-else๋‚˜ switch-case๋กœ ๋งŒ๋“ค์–ด์„œ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š” ์ฝ”๋“œ๋„ ๊น”๋”ํ•œ ๊ฒƒ ๊ฐ™๋‹ค.

728x90

'CodingTest > Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

BOJ_1043 : ๊ฑฐ์ง“๋ง  (0) 2023.06.09
BOJ_1149 : RGB๊ฑฐ๋ฆฌ  (0) 2023.06.08
Lv.1 : ์ถ”์–ต ์ ์ˆ˜  (0) 2023.04.25
Lv.1 : ๋‹ฌ๋ฆฌ๊ธฐ ๊ฒฝ์ฃผ  (0) 2023.04.25
BOJ_2252 : ์ค„ ์„ธ์šฐ๊ธฐ  (0) 2023.04.22