ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๋ฌธ์ œ

๊ฒŒ์ž„๊ฐœ๋ฐœ์ž์ธ "์ฃ ๋ฅด๋””"๋Š” ํฌ๋ ˆ์ธ ์ธํ˜•๋ฝ‘๊ธฐ ๊ธฐ๊ณ„๋ฅผ ๋ชจ๋ฐ”์ผ ๊ฒŒ์ž„์œผ๋กœ ๋งŒ๋“ค๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
"์ฃ ๋ฅด๋””"๋Š” ๊ฒŒ์ž„์˜ ์žฌ๋ฏธ๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•ด ํ™”๋ฉด ๊ตฌ์„ฑ๊ณผ ๊ทœ์น™์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฒŒ์ž„ ๋กœ์ง์— ๋ฐ˜์˜ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๊ฒŒ์ž„ ํ™”๋ฉด์€ "1 x 1" ํฌ๊ธฐ์˜ ์นธ๋“ค๋กœ ์ด๋ฃจ์–ด์ง„ "N x N" ํฌ๊ธฐ์˜ ์ •์‚ฌ๊ฐ ๊ฒฉ์ž์ด๋ฉฐ ์œ„์ชฝ์—๋Š” ํฌ๋ ˆ์ธ์ด ์žˆ๊ณ  ์˜ค๋ฅธ์ชฝ์—๋Š” ๋ฐ”๊ตฌ๋‹ˆ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. (์œ„ ๊ทธ๋ฆผ์€ "5 x 5" ํฌ๊ธฐ์˜ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค). ๊ฐ ๊ฒฉ์ž ์นธ์—๋Š” ๋‹ค์–‘ํ•œ ์ธํ˜•์ด ๋“ค์–ด ์žˆ์œผ๋ฉฐ ์ธํ˜•์ด ์—†๋Š” ์นธ์€ ๋นˆ์นธ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ์ธํ˜•์€ "1 x 1" ํฌ๊ธฐ์˜ ๊ฒฉ์ž ํ•œ ์นธ์„ ์ฐจ์ง€ํ•˜๋ฉฐ ๊ฒฉ์ž์˜ ๊ฐ€์žฅ ์•„๋ž˜ ์นธ๋ถ€ํ„ฐ ์ฐจ๊ณก์ฐจ๊ณก ์Œ“์—ฌ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒŒ์ž„ ์‚ฌ์šฉ์ž๋Š” ํฌ๋ ˆ์ธ์„ ์ขŒ์šฐ๋กœ ์›€์ง์—ฌ์„œ ๋ฉˆ์ถ˜ ์œ„์น˜์—์„œ ๊ฐ€์žฅ ์œ„์— ์žˆ๋Š” ์ธํ˜•์„ ์ง‘์–ด ์˜ฌ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง‘์–ด ์˜ฌ๋ฆฐ ์ธํ˜•์€ ๋ฐ”๊ตฌ๋‹ˆ์— ์Œ“์ด๊ฒŒ ๋˜๋Š” ๋ฐ, ์ด๋•Œ ๋ฐ”๊ตฌ๋‹ˆ์˜ ๊ฐ€์žฅ ์•„๋ž˜ ์นธ๋ถ€ํ„ฐ ์ธํ˜•์ด ์ˆœ์„œ๋Œ€๋กœ ์Œ“์ด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๊ทธ๋ฆผ์€ [1๋ฒˆ, 5๋ฒˆ, 3๋ฒˆ] ์œ„์น˜์—์„œ ์ˆœ์„œ๋Œ€๋กœ ์ธํ˜•์„ ์ง‘์–ด ์˜ฌ๋ ค ๋ฐ”๊ตฌ๋‹ˆ์— ๋‹ด์€ ๋ชจ์Šต์ž…๋‹ˆ๋‹ค.

๋งŒ์•ฝ ๊ฐ™์€ ๋ชจ์–‘์˜ ์ธํ˜• ๋‘ ๊ฐœ๊ฐ€ ๋ฐ”๊ตฌ๋‹ˆ์— ์—ฐ์†ํ•ด์„œ ์Œ“์ด๊ฒŒ ๋˜๋ฉด ๋‘ ์ธํ˜•์€ ํ„ฐ๋œจ๋ ค์ง€๋ฉด์„œ ๋ฐ”๊ตฌ๋‹ˆ์—์„œ ์‚ฌ๋ผ์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์œ„ ์ƒํƒœ์—์„œ ์ด์–ด์„œ [5๋ฒˆ] ์œ„์น˜์—์„œ ์ธํ˜•์„ ์ง‘์–ด ๋ฐ”๊ตฌ๋‹ˆ์— ์Œ“์œผ๋ฉด ๊ฐ™์€ ๋ชจ์–‘ ์ธํ˜• ๋‘ ๊ฐœ๊ฐ€ ์—†์–ด์ง‘๋‹ˆ๋‹ค.

ํฌ๋ ˆ์ธ ์ž‘๋™ ์‹œ ์ธํ˜•์ด ์ง‘์–ด์ง€์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋Š” ์—†์œผ๋‚˜ ๋งŒ์•ฝ ์ธํ˜•์ด ์—†๋Š” ๊ณณ์—์„œ ํฌ๋ ˆ์ธ์„ ์ž‘๋™์‹œํ‚ค๋Š” ๊ฒฝ์šฐ์—๋Š” ์•„๋ฌด๋Ÿฐ ์ผ๋„ ์ผ์–ด๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ฐ”๊ตฌ๋‹ˆ๋Š” ๋ชจ๋“  ์ธํ˜•์ด ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์„ ๋งŒํผ ์ถฉ๋ถ„ํžˆ ํฌ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. (๊ทธ๋ฆผ์—์„œ๋Š” ํ™”๋ฉดํ‘œ์‹œ ์ œ์•ฝ์œผ๋กœ 5์นธ๋งŒ์œผ๋กœ ํ‘œํ˜„ํ•˜์˜€์Œ)

๊ฒŒ์ž„ ํ™”๋ฉด์˜ ๊ฒฉ์ž์˜ ์ƒํƒœ๊ฐ€ ๋‹ด๊ธด 2์ฐจ์› ๋ฐฐ์—ด board์™€ ์ธํ˜•์„ ์ง‘๊ธฐ ์œ„ํ•ด ํฌ๋ ˆ์ธ์„ ์ž‘๋™์‹œํ‚จ ์œ„์น˜๊ฐ€ ๋‹ด๊ธด ๋ฐฐ์—ด moves๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ํฌ๋ ˆ์ธ์„ ๋ชจ๋‘ ์ž‘๋™์‹œํ‚จ ํ›„ ํ„ฐํŠธ๋ ค์ ธ ์‚ฌ๋ผ์ง„ ์ธํ˜•์˜ ๊ฐœ์ˆ˜๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

[์ œํ•œ์‚ฌํ•ญ]

  • board ๋ฐฐ์—ด์€ 2์ฐจ์› ๋ฐฐ์—ด๋กœ ํฌ๊ธฐ๋Š” "5 x 5" ์ด์ƒ "30 x 30" ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • board์˜ ๊ฐ ์นธ์—๋Š” 0 ์ด์ƒ 100 ์ดํ•˜์ธ ์ •์ˆ˜๊ฐ€ ๋‹ด๊ฒจ์žˆ์Šต๋‹ˆ๋‹ค.
    • 0์€ ๋นˆ ์นธ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
    • 1 ~ 100์˜ ๊ฐ ์ˆซ์ž๋Š” ๊ฐ๊ธฐ ๋‹ค๋ฅธ ์ธํ˜•์˜ ๋ชจ์–‘์„ ์˜๋ฏธํ•˜๋ฉฐ ๊ฐ™์€ ์ˆซ์ž๋Š” ๊ฐ™์€ ๋ชจ์–‘์˜ ์ธํ˜•์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  • moves ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋Š” 1 ์ด์ƒ 1,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • moves ๋ฐฐ์—ด ๊ฐ ์›์†Œ๋“ค์˜ ๊ฐ’์€ 1 ์ด์ƒ์ด๋ฉฐ board ๋ฐฐ์—ด์˜ ๊ฐ€๋กœ ํฌ๊ธฐ ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

boardmovesresult

[[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4

์ž…์ถœ๋ ฅ ์˜ˆ์— ๋Œ€ํ•œ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ #1

์ธํ˜•์˜ ์ฒ˜์Œ ์ƒํƒœ๋Š” ๋ฌธ์ œ์— ์ฃผ์–ด์ง„ ์˜ˆ์‹œ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํฌ๋ ˆ์ธ์ด [1, 5, 3, 5, 1, 2, 1, 4] ๋ฒˆ ์œ„์น˜์—์„œ ์ฐจ๋ก€๋Œ€๋กœ ์ธํ˜•์„ ์ง‘์–ด์„œ ๋ฐ”๊ตฌ๋‹ˆ์— ์˜ฎ๊ฒจ ๋‹ด์€ ํ›„, ์ƒํƒœ๋Š” ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์œผ๋ฉฐ ๋ฐ”๊ตฌ๋‹ˆ์— ๋‹ด๋Š” ๊ณผ์ •์—์„œ ํ„ฐํŠธ๋ ค์ ธ ์‚ฌ๋ผ์ง„ ์ธํ˜•์€ 4๊ฐœ ์ž…๋‹ˆ๋‹ค.

 

๋ฌธ์ œํ’€์ด


  1. ํฌ๋ ˆ์ธ์ด ์ด๋™ํ•ด์•ผ ํ•  ์œ„์น˜ ์ •๋ณด๊ฐ€ ๋‹ด๊ธด moves ๋ฐฐ์—ด์„ ์ˆœํšŒ ๋ฐ ์ฐธ์กฐ
  2. ํ•ด๋‹น ์œ„์น˜์— ์žˆ๋Š” ๋ณด๋“œ์˜ ๊ฐ€์žฅ ์ƒ๋‹จ ์•„์ดํ…œ์„ ์ถ”์ถœ
  3. ์ถ”์ถœํ•œ ์•„์ดํ…œ์„ ์Šคํƒ์— ์ ์žฌ: ์•„์ดํ…œ์ด 0์ผ ๊ฒฝ์šฐ๋Š”  ๋นˆ ๋ณด๋“œ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ ์žฌํ•˜์ง€ ์•Š๊ณ  ๋‹ค์Œ ๋ณด๋“œ๋กœ ๋„˜์–ด๊ฐ
  4. ์Šคํƒ์— ์—ฐ์†ํ•ด์„œ ๋™์ผํ•œ ์•„์ดํ…œ์ด ์ ์žฌ๋  ๊ฒฝ์šฐ๋Š” ํ•ด๋‹น ์•„์ดํ…œ๋“ค์„ ์‚ญ์ œํ•ด์ฃผ๊ณ  ์‚ญ์ œ ์—ฐ์‚ฐ์ด ๋ฐ˜๋ณต๋œ ๋งŒํผ ํšŸ์ˆ˜ ์ฆ๊ฐ€

์ฝ”๋“œ

function solution(b, m) {
  let answer = 0;
  let stack = [];

  for(let i = 0; i < m.length; i++) {
      let curBoard = b[m[i] - 1]; //๋ณด๋“œ์˜ ๊ฐ ์ธ๋ฑ์Šค ์š”์†Œ๋Š” ๋ฐฐ์—ด ๋‚ด์— ์ ์žฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ, ์ด๋ฅผ ๋ฐ˜์˜ํ•ด 1์„ ๊ฐ์‚ฐ
      let curItem = curBoard.pop(); //ํ˜„์žฌ ๋ณด๋“œ์—์„œ ๋ฝ‘์•„๋‚ธ ์•„์ดํ…œ์„ ์ฐธ์กฐ
      if(curItem === 0) continue; //๋นˆ ๋ณด๋“œ์ผ ๊ฒฝ์šฐ์—๋Š” ์ ์žฌํ•˜์ง€ ์•Š๊ณ  ๋‹ค์Œ ๋ณด๋“œ๋กœ ๋„˜์–ด๊ฐ
      else {
        stack.push(curItem);
        if(stack[stack.length - 1] === stack[(stack.length - 1) - 1]) { //๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ์ €์žฅ๋œ ์ธ๋ฑ์Šค ์š”์†Œ์™€ ์ง์ „์— ์ €์žฅ๋œ ์ธ๋ฑ์Šค ์š”์†Œ๋ฅผ ๋น„๊ต
          while(stack.pop() !== stack[(stack.length - 1) - 1]) {
            answer++;
          }
        }
      }
  }
  return answer;
}

let board = [[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]];
let moves = [1,5,3,5,1,2,1,4];
console.log(solution(board, moves));

 

์˜ค๋‹ต

๋ฌธ์ œ์—์„œ์˜ ์ธํ˜• ๋ฝ‘๊ธฐ ๊ธฐ๊ณ„๋Š” ํ–‰๊ณผ ์—ด๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋Š” 2์ฐจ์› ๋ฐฐ์—ด์ด๋‹ค.์•ž์„  ๋ฌธ์ œ๋ฅผ ํ’€์ดํ•  ์‹œ, ๊ฐ board๋ฅผ ์ ‘๊ทผํ•  ๋•Œ ํ–‰์„ ๊ธฐ์ค€์œผ๋กœ ์ธ๋ฑ์Šค๋ฅผ ์›€์ง์˜€๋‹ค. 

 

์ด๋ ‡๊ฒŒ ํ–‰์„ ๊ธฐ์ค€์œผ๋กœ ์ธ๋ฑ์Šค๋ฅผ ์›€์ง์ด๋Š” ๊ฒƒ์€ ๋ฌธ์ œ์—์„œ์˜ ํฌ๋ ˆ์ธ๊ณผ ๊ฐ™์ด ์ขŒ์šฐ๋กœ ์›€์ง์ด๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์œ„์•„๋ž˜๋กœ ์›€์ง์ด๋Š”๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ํ–‰์ด ์•„๋‹Œ ์—ด์„ ๊ธฐ์ค€์œผ๋กœ ํ•ด์„œ ์ธ๋ฑ์Šค๋ฅผ ์›€์ง์—ฌ์•ผ ํ•œ๋‹ค.

 

๋˜ํ•œ ์•„์ดํ…œ์„ ๋ฝ‘์€ ๋’ค์—๋Š” ํ•ด๋‹น ์ž๋ฆฌ์— ์•„์ดํ…œ์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์˜๋ฏธ๋กœ 0์„ ์ดˆ๊ธฐํ™”ํ•ด์ค˜์•ผ ๋˜์ง€๋งŒ ์•ž์„  ๋ฌธ์ œ์—์„œ๋Š” pop์—ฐ์‚ฐ์„ ํ•˜์—ฌ ํ•ด๋‹น ์•„์ดํ…œ์„ ๋ฝ‘๊ธฐ๋งŒ ํ•  ๋ฟ, ๊ทธ ์•„์ดํ…œ์ด ์žˆ๋˜ ๊ณต๊ฐ„์„ ๋น„์–ด ์žˆ๋Š” ๊ณต๊ฐ„์œผ๋กœ ๋งŒ๋“ค์–ด์ฃผ์ง€ ๋ชปํ–ˆ๋‹ค.

 

์ฝ”๋“œ

 function solution(board, moves){
                let answer=0;
                let stack=[];
                moves.forEach(pos => {
                    for(let i=0; i<board.length; i++){
                        if(board[i][pos-1]!==0){ //๋น„์–ด ์žˆ๋Š” ์•„์ดํ…œ์ผ ๊ฒฝ์šฐ์—๋Š” ์—ฐ์‚ฐ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์Œ
                            let tmp=board[i][pos-1];
                            board[i][pos-1]=0; //์•„์ดํ…œ์„ ๋ฝ‘์€ ๋’ค์—๋Š” ํ•ด๋‹น ๋นˆ์นธ์„ 0์œผ๋กœ ์ดˆ๊ธฐํ™”
                            if(tmp===stack[stack.length-1]){
                                stack.pop();
                                answer+=2;
                            }
                            else stack.push(tmp);
                            break; //์•„์ดํ…œ์„ ๋ฝ‘์•˜์œผ๋ฉด ๋” ์ด์ƒ ํ•ด๋‹น ๋ณด๋“œ ๋‚ด์— ๊ทธ ๋‹ค์Œ ์•„์ดํ…œ์€ ๋ฝ‘์œผ๋ฉด ์•ˆ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ข…๋ฃŒ
                        }
                    }
                });
                                
                return answer;
            }
            
            let a=[[0,0,0,0,0],
                   [0,0,1,0,3],
                   [0,2,5,0,1],
                   [4,2,4,4,2],
                   [3,5,1,3,1]];

            let b=[1, 5, 3, 5, 1, 2, 1, 4];
            console.log(solution(a, b));
๋Œ“๊ธ€
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
TAG
more
ยซ   2025/02   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
๊ธ€ ๋ณด๊ด€ํ•จ