[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋ฐฉ๋ฌธ ๊ธธ์ด (JAVA)

2025. 2. 3. 15:34ยท๐Ÿ’ช Algorithm
๋ฐ˜์‘ํ˜•

๋งํฌ

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

 

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

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก, ์ฑ„์šฉ๊นŒ์ง€ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr

 

๋ฌธ์ œ ์š”์•ฝ

๋ช…๋ น์–ด ๋ฆฌ์ŠคํŠธ dirs๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์บ๋ฆญํ„ฐ๊ฐ€ ์ง€๋‚˜๊ฐ„ ๊ธธ ์ค‘ ์บ๋ฆญํ„ฐ๊ฐ€ ์ฒ˜์Œ ๊ฑธ์–ด๋ณธ ๊ธธ์˜ ๊ธธ์ด๋ฅผ ๊ตฌํ•˜๊ธฐ

 

์ด๋™ ๋ช…๋ น์–ด 4๊ฐ€์ง€ U, D, R, L(์œ„, ์•„๋ž˜, ์˜ค, ์™ผ)๊ฐ€ ์žˆ๋‹ค.

์ฆ‰, ์ด์ „์— ์™”๋˜ ๊ธธ์€ ์นด์šดํŠธํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

 

์ œํ•œ

  • dirs๋Š” stringํ˜•์œผ๋กœ ์ฃผ์–ด์ง€๋ฉฐ, 'U', 'D', 'R', 'L' ์ด์™ธ์— ๋ฌธ์ž๋Š” ์ฃผ์–ด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • dirs์˜ ๊ธธ์ด๋Š” 500 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.

 

ํ’€์ด

dirs ๊ธธ์ด๊ฐ€ 500 ์ดํ•˜์ด๊ณ , ์ขŒํ‘œํ‰๋ฉด์˜ ํฌ๊ธฐ๋Š” 10*10์œผ๋กœ ๊ณ ์ •์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ํฌ๊ฒŒ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๊ณ  ํ๋ฆ„๋Œ€๋กœ ๊ตฌํ˜„ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

  1. dirs ์† ๋ช…๋ น์–ด๋ฅผ ํ•˜๋‚˜์”ฉ ์ˆœํšŒํ•˜๋ฉด์„œ ์™”๋˜ ๊ธธ์„ ์ฒดํฌํ•œ๋‹ค.
  2. ๋งŒ์•ฝ, ์ด์ „์— ์™”๋˜ ๊ธธ์ด๋ฉด ์ฒดํฌํ•˜์ง€ ์•Š๋Š”๋‹ค.
  3. ๋งˆ์ง€๋ง‰์œผ๋กœ ์นด์šดํŠธํ•œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์™”๋˜ ๊ธธ์„ ์ฒดํฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์–ด๋–ค ํ˜•ํƒœ์˜ ๋ฐฐ์—ด์ด ํ•„์š”ํ• ๊นŒ์š”?

ํ˜„์žฌ ์ขŒํ‘œ์—์„œ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ์„ ํƒ์ง€๋Š” ์œ„์ชฝ, ์•„๋ž˜์ชฝ, ์˜ค๋ฅธ์ชฝ, ์™ผ์ชฝ 4๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

์ฆ‰, ์™”๋˜ ๊ธธ์ธ์ง€ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๊ฐ’์€ <์ด์ „ x์ขŒํ‘œ, ์ด์ „ y์ขŒํ‘œ, ๋ฐฉํ–ฅ>์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ํฌ๊ธฐ๊ฐ€ 11*11*4์ธ 3์ฐจ์› ๋ฐฐ์—ด๋กœ visit ์—ฌ๋ถ€๋ฅผ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๊ตฌํ˜„ํ•  ๋•Œ ์ฃผ์˜ํ•  ์ ์ด ๋ช‡ ๊ฐ€์ง€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ์กฐ๊ฑด๋ฌธ์„ ์ž˜ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. ์ธ๋ฑ์Šค์—๋Š” ์Œ์ˆ˜๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
    1. ๋”ฐ๋ผ์„œ ์ฃผ์–ด์ง„ ์ขŒํ‘œํ‰๋ฉด๊ณผ ๋‹ค๋ฅด๊ฒŒ ์™ผ์ชฝ ๋งจ ์œ„๋ฅผ 0,0์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ณ  ํ‘œ์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  2. ์–ด๋–ค ๋ฌธ์ œ๋“  ์ขŒํ‘œํ‰๋ฉด, ์œ„์น˜ ์ด๋™ ๊ด€๋ จ์ผ ๋•Œ ํ•ญ์ƒ ๊ฒฝ๊ณ—๊ฐ’์„ ๋ฒ—์–ด๋‚˜์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  3. ์–‘๋ฐฉํ–ฅ์ž…๋‹ˆ๋‹ค.
    1. ๋˜‘๊ฐ™์€ ๊ธธ์„ ์œ„๋กœ ์ด๋™ํ–ˆ๋‹ค๋ฉด ๋‹ค์‹œ ์•„๋ž˜๋กœ๋„ ์ด๋™ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋ฅผ ๋‘˜ ๋‹ค ํ‘œ์‹œํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    2. ์ €๋Š” ๋‘˜ ๋‹ค ํ‘œ์‹œํ•˜๊ธฐ ๊ท€์ฐฎ์•„์„œ ๊ทธ๋ƒฅ ํ•˜๋‚˜๋กœ ํ†ต์ผํ–ˆ์Šต๋‹ˆ๋‹ค. ์œ„-์•„๋ž˜๋Š” ๋ฌด์กฐ๊ฑด ์œ„์— ์žˆ๋Š” ์ขŒํ‘œ ๊ธฐ์ค€์œผ๋กœ, ์™ผ-์˜ค๋Š” ๋ฌด์กฐ๊ฑด ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š” ์ขŒํ‘œ ๊ธฐ์ค€์œผ๋กœ ํ‘œ์‹œํ•˜๊ฒŒ ํ–ˆ์Šต๋‹ˆ๋‹ค.

 

์ฝ”๋“œ

import java.util.*;
class Solution {
    public int solution(String dirs) {
        boolean[][][] visited = new boolean[11][11][2];
        int curX=5, curY=5, cnt=0;
        for(int i=0; i<dirs.length(); i++){
            if(dirs.charAt(i)=='U' && curX-1>=0){
                if(!visited[curX][curY][0]){
                    visited[curX][curY][0]=true;
                    cnt++;
                }
                curX--;
            } else if(dirs.charAt(i)=='D' && curX+1<=10){
                if(!visited[curX+1][curY][0]){
                    visited[curX+1][curY][0] = true;
                    cnt++;
                }
                 curX++;
            } else if(dirs.charAt(i)=='R' && curY+1<=10){
                if(!visited[curX][curY+1][1]){
                    visited[curX][curY+1][1] = true;
                    cnt++;
                }
                curY++;
            } else if(dirs.charAt(i)=='L' && curY-1>=0){
                if(!visited[curX][curY][1]){
                    visited[curX][curY][1]=true;
                    cnt++;
                }
                curY--;
            }
        }
        return cnt;
    }
}

๐Ÿท ์‹œ๊ฐ„ ๋ณต์žก๋„

  • N: dirs ๊ธธ์ด
  • for๋ฌธ: O(N)
  • ์ „์ฒด ์‹œ๊ฐ„ ๋ณต์žก๋„: O(N)

๐Ÿท ์„ค๋ช…

  • `visited`์˜ ์ฒซ ์ธ๋ฑ์Šค๋Š” X ์ขŒํ‘œ, ๋‘ ๋ฒˆ์งธ ์ธ๋ฑ์Šค๋Š” Y์ขŒํ‘œ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
  • ์„ธ ๋ฒˆ์งธ ์ธ๋ฑ์Šค๋Š” ๋‘ ๊ฐ€์ง€ ๊ฐ’์œผ๋กœ 0์ด๋ฉด ์œ„-์•„๋ž˜ ํ‘œ์‹œ, 1์ด๋ฉด ์™ผ-์˜ค ํ‘œ์‹œ์ž…๋‹ˆ๋‹ค.
  • ์ด๋ฏธ ๋ฐฉ๋ฌธํ•œ ๊ธธ์€ ์นด์šดํŠธ๋ฅผ ํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ์ขŒํ‘œ ์ด๋™์„ ํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ์ฒ˜์Œ์— ๋ฐฉ๋ฌธํ•œ ๊ธธ์ด๋ฉด ๋ฌด์กฐ๊ฑด ํŒจ์Šคํ•˜๊ฒŒ ๊ตฌํ˜„ํ–ˆ๋‹ค๊ฐ€ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค ๐Ÿ˜…
๋ฐ˜์‘ํ˜•

'๐Ÿ’ช Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ง์ง€์–ด ์ œ๊ฑฐํ•˜๊ธฐ (JAVA)  (1) 2025.02.04
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๊ด„ํ˜ธ ํšŒ์ „ํ•˜๊ธฐ (JAVA)  (2) 2025.02.04
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์‹คํŒจ์œจ (JAVA)  (1) 2025.02.02
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํ–‰๋ ฌ์˜ ๊ณฑ์…ˆ (JAVA)  (1) 2025.02.01
'๐Ÿ’ช Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ง์ง€์–ด ์ œ๊ฑฐํ•˜๊ธฐ (JAVA)
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๊ด„ํ˜ธ ํšŒ์ „ํ•˜๊ธฐ (JAVA)
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์‹คํŒจ์œจ (JAVA)
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํ–‰๋ ฌ์˜ ๊ณฑ์…ˆ (JAVA)
dev-heyjin
dev-heyjin
  • dev-heyjin
    ๊ฐœ๋ฐœ ๊ธฐ๋ก
    dev-heyjin
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (56)
      • ๐ŸŽฏ Programming (8)
      • ๐Ÿ’ช Algorithm (16)
      • โš™๏ธ CS (31)
        • ๋„คํŠธ์›Œํฌ (15)
        • ์šด์˜์ฒด์ œ (15)
        • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (0)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    DB
    ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
    ํ•ดํ‚น
    RDS
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
dev-heyjin
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋ฐฉ๋ฌธ ๊ธธ์ด (JAVA)
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”