๐Ÿ’ป์šฉ๋‡ฝ ๊ฐœ๋ฐœ ๋…ธํŠธ๐Ÿ’ป
article thumbnail
๋ฐ˜์‘ํ˜•

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ '๊ณต์› ์‚ฐ์ฑ…' ๋ฌธ์ œํ’€์ด (LV.1)

โ“ ๋ฌธ์ œ 

๋ฌธ์ œ ์„ค๋ช…

์ง€๋‚˜๋‹ค๋‹ˆ๋Š” ๊ธธ์„ 'O', ์žฅ์• ๋ฌผ์„ 'X'๋กœ ๋‚˜ํƒ€๋‚ธ ์ง์‚ฌ๊ฐํ˜• ๊ฒฉ์ž ๋ชจ์–‘์˜ ๊ณต์›์—์„œ ๋กœ๋ด‡ ๊ฐ•์•„์ง€๊ฐ€ ์‚ฐ์ฑ…์„ ํ•˜๋ คํ•ฉ๋‹ˆ๋‹ค. ์‚ฐ์ฑ…์€ ๋กœ๋ด‡ ๊ฐ•์•„์ง€์— ๋ฏธ๋ฆฌ ์ž…๋ ฅ๋œ ๋ช…๋ น์— ๋”ฐ๋ผ ์ง„ํ–‰ํ•˜๋ฉฐ, ๋ช…๋ น์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.
["๋ฐฉํ–ฅ ๊ฑฐ๋ฆฌ", "๋ฐฉํ–ฅ ๊ฑฐ๋ฆฌ" … ]
์˜ˆ๋ฅผ ๋“ค์–ด "E 5"๋Š” ๋กœ๋ด‡ ๊ฐ•์•„์ง€๊ฐ€ ํ˜„์žฌ ์œ„์น˜์—์„œ ๋™์ชฝ์œผ๋กœ 5์นธ ์ด๋™ํ–ˆ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. ๋กœ๋ด‡ ๊ฐ•์•„์ง€๋Š” ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์ „์— ๋‹ค์Œ ๋‘ ๊ฐ€์ง€๋ฅผ ๋จผ์ € ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
์ฃผ์–ด์ง„ ๋ฐฉํ–ฅ์œผ๋กœ ์ด๋™ํ•  ๋•Œ ๊ณต์›์„ ๋ฒ—์–ด๋‚˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.์ฃผ์–ด์ง„ ๋ฐฉํ–ฅ์œผ๋กœ ์ด๋™ ์ค‘ ์žฅ์• ๋ฌผ์„ ๋งŒ๋‚˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
์œ„ ๋‘ ๊ฐ€์ง€์ค‘ ์–ด๋Š ํ•˜๋‚˜๋ผ๋„ ํ•ด๋‹น๋œ๋‹ค๋ฉด, ๋กœ๋ด‡ ๊ฐ•์•„์ง€๋Š” ํ•ด๋‹น ๋ช…๋ น์„ ๋ฌด์‹œํ•˜๊ณ  ๋‹ค์Œ ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.๊ณต์›์˜ ๊ฐ€๋กœ ๊ธธ์ด๊ฐ€ W, ์„ธ๋กœ ๊ธธ์ด๊ฐ€ H๋ผ๊ณ  ํ•  ๋•Œ, ๊ณต์›์˜ ์ขŒ์ธก ์ƒ๋‹จ์˜ ์ขŒํ‘œ๋Š” (0, 0), ์šฐ์ธก ํ•˜๋‹จ์˜ ์ขŒํ‘œ๋Š” (H - 1, W - 1) ์ž…๋‹ˆ๋‹ค.
๊ณต์›์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฌธ์ž์—ด ๋ฐฐ์—ด 
park
, ๋กœ๋ด‡ ๊ฐ•์•„์ง€๊ฐ€ ์ˆ˜ํ–‰ํ•  ๋ช…๋ น์ด ๋‹ด๊ธด ๋ฌธ์ž์—ด ๋ฐฐ์—ด 
routes
๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ๋กœ๋ด‡ ๊ฐ•์•„์ง€๊ฐ€ ๋ชจ๋“  ๋ช…๋ น์„ ์ˆ˜ํ–‰ ํ›„ ๋†“์ธ ์œ„์น˜๋ฅผ [์„ธ๋กœ ๋ฐฉํ–ฅ ์ขŒํ‘œ, ๊ฐ€๋กœ ๋ฐฉํ–ฅ ์ขŒํ‘œ] ์ˆœ์œผ๋กœ ๋ฐฐ์—ด์— ๋‹ด์•„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

๋ฌธ์ œ ์„ค๋ช… ์‚ฌ์ง„

์ œํ•œ ์‚ฌํ•ญ

      • 3 ≤ park์˜ ๊ธธ์ด ≤ 50
        • 3 ≤ park[i]์˜ ๊ธธ์ด ≤ 50
          • park[i]๋Š” ๋‹ค์Œ ๋ฌธ์ž๋“ค๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ ์‹œ์ž‘์ง€์ ์€ ํ•˜๋‚˜๋งŒ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.
            • S : ์‹œ์ž‘ ์ง€์ 
            • O : ์ด๋™ ๊ฐ€๋Šฅํ•œ ํ†ต๋กœ
            • X : ์žฅ์• ๋ฌผ
        • park๋Š” ์ง์‚ฌ๊ฐํ˜• ๋ชจ์–‘์ž…๋‹ˆ๋‹ค.
      • 1 ≤ routes์˜ ๊ธธ์ด ≤ 50
        • routes์˜ ๊ฐ ์›์†Œ๋Š” ๋กœ๋ด‡ ๊ฐ•์•„์ง€๊ฐ€ ์ˆ˜ํ–‰ํ•  ๋ช…๋ น์–ด๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
        • ๋กœ๋ด‡ ๊ฐ•์•„์ง€๋Š” routes์˜ ์ฒซ ๋ฒˆ์งธ ์›์†Œ๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
        • routes์˜ ์›์†Œ๋Š” "op n"๊ณผ ๊ฐ™์€ ๊ตฌ์กฐ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ, op๋Š” ์ด๋™ํ•  ๋ฐฉํ–ฅ, n์€ ์ด๋™ํ•  ์นธ์˜ ์ˆ˜๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
          • op๋Š” ๋‹ค์Œ ๋„ค ๊ฐ€์ง€์ค‘ ํ•˜๋‚˜๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
            • N : ๋ถ์ชฝ์œผ๋กœ ์ฃผ์–ด์ง„ ์นธ๋งŒํผ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
            • S : ๋‚จ์ชฝ์œผ๋กœ ์ฃผ์–ด์ง„ ์นธ๋งŒํผ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
            • W : ์„œ์ชฝ์œผ๋กœ ์ฃผ์–ด์ง„ ์นธ๋งŒํผ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
            • E : ๋™์ชฝ์œผ๋กœ ์ฃผ์–ด์ง„ ์นธ๋งŒํผ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
          • 1 ≤ n ≤ 9

์ž…์ถœ๋ ฅ ์˜ˆ

์ž…์ถœ๋ ฅ ์˜ˆ

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

๋ฐ˜์‘ํ˜•

๐Ÿ’ก ์„ฑ๊ณตํ•œ ํ’€์ด

function solution(park, routes) {
    let pos = [0, 0];
    const dict = {
        E: [0, 1],
        W: [0, -1],
        S: [1, 0],
        N: [-1, 0]
    };
    
    for(let i = 0; i < park.length; i++) {
        const findedIdx = park[i].indexOf('S');
        if(findedIdx > -1) {
            pos = [i, findedIdx];
            break;
        }
    }
    
    routes.forEach((route, index) => {
        const [op, n] = route.split(' ');
        const tempPos = [...pos];
        let no = false;
        
        for(let i = 0; i < n; i++) {
            tempPos[0] += dict[op][0];
            tempPos[1] += dict[op][1];
            
            if((tempPos[0] < 0) || (tempPos[0] > park.length - 1) ||
                (tempPos[1] < 0) || (tempPos[1] > park[0].length - 1)) {
                no = true;
                break;
            }
            
            if(park[tempPos[0]][tempPos[1]] === 'X') {
                no = true;
                break;
            }
        }
        
        if(!no) {
            pos = tempPos;
        }
        
    })
    
    return pos;
}

๋จผ์ € ๋™,์„œ,๋‚จ,๋ถ ๋ณ„๋กœ ์ด๋™ํ•ด์•ผ ํ•˜๋Š” ๋ฐฉํ–ฅ๊ณผ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•œ dict๋ฅผ ์„ ์–ธํ•ด ์ฃผ์—ˆ๋‹ค.

 

์ฒซ ๋ฒˆ์งธ ๋ฐ˜๋ณต๋ฌธ ์—์„œ๋Š” ์‹œ์ž‘์œ„์น˜ ์ฆ‰, 'S'์˜ ์œ„์น˜๋ฅผ ์ฐพ๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๋‹ค.

์ด์ค‘๋ฐฐ์—ด์ด๊ธฐ ๋•Œ๋ฌธ์— ์ฒซ๋ฒˆ์งธ ๋ฐ˜๋ณต๋ฌธ ์•ˆ์—์„œ indexOf๋ฅผ ํ†ตํ•ด 'S'์˜ index๋ฅผ ๊ฐ’์„ findedIdx์— ๋‹ด๊ณ ,

findexdIdx์˜ ๊ฐ’์ด -1 ๋ณด๋‹ค ํฌ๋ฉด pos ๋ณ€์ˆ˜์— ํ˜„์žฌ index์™€ ์ฐพ์€ index์˜ ๊ฐ’์„ ๋‹ด์•„์ฃผ์—ˆ๋‹ค. [i, findedIdx] === [์„ธ๋กœ, ๊ฐ€๋กœ]

๊ทธ๋ฆฌ๊ณ  ์‹œ์ž‘ ์œ„์น˜๋Š” ํ•œ ๋ฒˆ๋ฐ–์— ๋ฐœ๊ฒฌ๋˜์ง€ ์•Š์œผ๋‹ˆ ํ•œ๋ฒˆ ๋ฐœ๊ฒฌ์ด ๋˜๋ฉด ๋ฐ˜๋ณต๋ฌธ์ด ๋” ์ด์ƒ ์‹คํ–‰๋˜์ง€ ์•Š๊ฒŒ๋” ๋ฐ˜๋ณต๋ฌธ์„ ๋๋‚ด์ฃผ๋„๋ก break๋ฅผ ํ•ด์ฃผ์—ˆ๋‹ค.

 

๋‹ค์Œ์€ routes ๋ฐฐ์—ด์— ๋Œ€ํ•œ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฆฐ๋‹ค.

์ด๋™ ๋ฐฉํ–ฅ๊ณผ ๊ฑฐ๋ฆฌ์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ๋ณ€์ˆ˜ op์™€ n์— ๋‹ด์•„์ฃผ๊ณ ,

๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”์ง€ ์—†๋Š”์ง€ ์ฒดํฌํ•˜๋Š” no๋ผ๋Š” ๋ณ€์ˆ˜๋ฅผ false๋กœ ์ดˆ๊ธฐํ™”์‹œ์ผœ์ฃผ์—ˆ๋‹ค.

S๊ฐ€ ์ด๋™ํ•˜๋Š” ์ค‘์— ์žฅ์• ๋ฌผ์„ ๋งŒ๋‚˜๊ฑฐ๋‚˜ ๊ฑฐ๋ฆฌ๊ฐ€ ๋ฒ—์–ด๋‚˜๋ฉด ๋‹ค์Œ ๋ช…๋ น์œผ๋กœ ๋„˜์–ด๊ฐ€์•ผ ํ•˜๋‹ˆ๊นŒ ์ž„์‹œ๋กœ ํ˜„์žฌ ์œ„์น˜๋ฅผ ๋‹ด์•„ ๋‘˜ ๋ณ€์ˆ˜ tempPos๋ฐฐ์—ด์— ํ˜„์žฌ 'S' ์ฆ‰, ์‹œ์ž‘์œ„์น˜๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” pos ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋‹ด์•„์ฃผ๋„๋ก ํ–ˆ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ์ด๋™ ๊ฑฐ๋ฆฌ n ๋งŒํผ ๋ฐ˜๋ณต๋ฌธ์„ ์‹คํ–‰ํ•˜๋Š”๋ฐ,

ํ˜„์žฌ ์œ„์น˜๋ฅผ ์ž„์‹œ๋กœ ๋‹ด์€ tempPos ๋ณ€์ˆ˜์— ์ด๋™ํ•  ๋ฐฉํ–ฅ๊ณผ ๊ฑฐ๋ฆฌ๋ฅผ ๋”ํ•ด์ฃผ๋„๋ก ํ–ˆ๋‹ค.

if๋ฌธ์ด ์ด 2๊ฐœ๊ฐ€ ์žˆ๋Š”๋ฐ,

์ฒซ ๋ฒˆ์งธ if๋ฌธ์€ ๊ฑฐ๋ฆฌ๋ฅผ ๋ฒ—์–ด๋‚จ์„ ์ฒดํฌํ•˜๋Š” ์ฝ”๋“œ์ด๊ณ ,

๋‘ ๋ฒˆ์งธ if๋ฌธ์€ ์ด๋™ ์ค‘ X(์ง€๋ขฐ)๋ฅผ ๋ฐœ๊ฒฌํ•˜๋Š” ์ฝ”๋“œ์ด๋‹ค.

์ด if๋ฌธ๋“ค์ด ํ—ˆ์šฉ์ด ๋˜๋ฉด ํ•ด๋‹น ์ด๋™๋ฐฉํ–ฅ์€ ์•ˆ๋œ๋‹ค๋Š” no๋ผ๋Š” ๋ณ€์ˆ˜์— true๋ฅผ ํ•ด์ฃผ๊ณ , ์ด๋™๊ฑฐ๋ฆฌ n๋งŒํผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ˜๋ณต๋ฌธ์„ ์ข…๋ฃŒํ•ด ์ค€๋‹ค.

 

์œ„ ๋ฐ˜๋ณต๋ฌธ์ด ๋๋‚˜๊ณ  ๋‚˜๋ฉด,

no๋ผ๋Š” ๋ณ€์ˆ˜์— false ์ฆ‰, ์ด๋™ํ•ด๋„ ๋˜๋Š” ๋ฐฉํ–ฅ๊ณผ ๊ฑฐ๋ฆฌ์ด๋ฉด ํ˜„์žฌ 'S' ์œ„์น˜๋ฅผ ๋‹ด์•„๋‘” pos ๋ณ€์ˆ˜์— tempPos ๋ณ€์ˆ˜์˜ ๊ฐ’์œผ๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค.

โœ” ์ฑ„์ 

์ฑ„์  ๊ฒฐ๊ณผ

๋ฐ˜์‘ํ˜•
profile

๐Ÿ’ป์šฉ๋‡ฝ ๊ฐœ๋ฐœ ๋…ธํŠธ๐Ÿ’ป

@์šฉ๋‡ฝ

ํฌ์ŠคํŒ…์ด ์ข‹์•˜๋‹ค๋ฉด "์ข‹์•„์š”โค๏ธ" ๋˜๋Š” "๊ตฌ๋…๐Ÿ‘๐Ÿป" ํ•ด์ฃผ์„ธ์š”!