Coding Test

Programmers: ํฌ๋ ˆ์ธ ์ธํ˜•๋ฝ‘๊ธฐ ๊ฒŒ์ž„

Deviloper๐Ÿ˜ˆ 2021. 8. 22. 18:09

โœ… ์ƒˆ๋กœ ๋ฐฐ์šด ์ 

๋จธ๋ฆฟ์†์œผ๋กœ ํ•œ๋ฒˆ์— ์ •๋ฆฌ๊ฐ€ ์•ˆ๋˜๋ฉด ์ˆ˜๋„์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ž.

๋‚ด ๋จธ๋ฆฌ๋กœ๋Š” ์ด ๋ฌธ์ œ๋ฅผ ์ฝ๊ณ  ํ•œ๋ฒˆ์— ์ฝ”๋“œ๊ฐ€ ๊ตฌ์กฐํ™”๊ฐ€ ๋˜์ง€ ์•Š์•˜๋‹ค...

์‚ฌ์‹ค ๋ฌธ์ œ ์ž…์ถœ๋ ฅ ์˜ˆ์‹œ๋„ ๊ทธ ์˜ˆ์‹œ ๋ฐ”๋กœ ์œ„ ๊ทธ๋ฆผ์— ํ•ด๋‹นํ•˜๋Š” ์ค„ ์•Œ๊ณ  ๋ฌธ์ œ ์ดํ•ด๋งŒ ์‹ญ๋ถ„ ๋„˜๊ฒŒ ๊ฑธ๋ ธ๋‹ค ํ•˜ํ•ณ

์›๋ž˜๋Š” ์ ค ์œ„์˜ ๊ทธ๋ฆผ์— ํ•ด๋‹นํ•œ ์˜ˆ์‹œ์˜€๋˜ ๊ฒƒ.

๋ฌธ์ œ ์ดํ•ด์— ์‹œ๊ฐ„ ์ผ๋‹ค๋Š” ์ƒ๊ฐ์— ๋ง˜ ๊ธ‰ํ•ด์ ธ์„œ ๊ทธ๋ƒฅ ์ƒ๊ฐ๋‚˜๋Š” ๋Œ€๋กœ ๋ฐ”๋กœ๋ฐ”๋กœ ์ฝ”๋“œ ์น˜๋‹ˆ๊น ์˜ค๋ฅ˜๊ฐ€ ๋ง‰ ๋‚˜๋”๋ผ๊ตฌ..?!

 

"์ด๋Ÿด๋• ์ฒœ์ฒœํžˆ ๊ฐ€๋”๋ผ๋„ ์ˆ˜๋„์ง€"๋ผ๊ณ  ์ƒ๊ฐํ•ด์„œ

์ƒํ™ฉ์„ ์ตœ๋Œ€ํ•œ ์„ธ์„ธํžˆ ๋‚˜๋ˆ„์–ด์„œ ์ˆ˜๋„์ฝ”๋“œ๋ฅผ ๋จผ์ € ์ž‘์„ฑํ•˜๊ณ 

๊ทธ๊ฑฐ์— ๋”ฐ๋ผ์„œ ์ฝ”๋”ฉ์„ ํ•ด๋ดค๋”๋‹ˆ ๋๋‹ค.

 

๋‚˜์ค‘์—๋Š” ์ด๋Ÿฐ ๋ฌธ์ œ๋„ ๋ฐ”๋กœ๋ฐ”๋กœ ๋‚ด ๋จธ๋ฆฟ์†์—์„œ ๊ตฌ์กฐํ™” ๋  ์ˆ˜ ์žˆ๊ธธ...๐Ÿ™

function solution(board, moves) {
    //board์˜ ๊ฐ’์ด 0์ด ์•„๋‹ ๋•Œ
      //cur ๊ฐ’๊ณผ board์˜ ๊ฐ’์ด ๊ฐ™์„ ๋•Œ
        //pocket ๊ธธ์ด 0๋ณด๋‹ค ํด๋•Œ
          //result +=2, pocket ํ•˜๋‚˜ ์—†์• ์ฃผ๊ณ , cur๊ฐ’์€ ์ดํ›„์˜ ๋งˆ์ง€๋ง‰๊ฑธ๋กœ
        //pocket์˜ ๊ธธ์ด๊ฐ€ 0์ด๋ฉด cur์€ 0
      //cur๊ฐ’๊ณผ board ๊ฐ’์ด ๋‹ค๋ฅผ ๋•Œ
        //pocket์— ๋„ฃ์–ด์ฃผ๊ณ  cur๊ฐ’ ๋ฐ”๊ฟ”์ฃผ๊ธฐ
    //๊ณผ์ • ๋‹ค๋๋‚˜๋ฉด board ์ˆซ์ž 0์œผ๋กœ ๋งŒ๋“ค์–ด์ฃผ๊ณ  ๊ณผ์ • ๋๋‚ด๊ธฐ
    
    let pocket = [];
    let result = 0;
    let cur = 0;
    for (let i = 0; i<moves.length; i++) {
        for (let j = 0; j<board.length; j++) {
            if(board[j][moves[i]-1]!==0) {
                if(cur === board[j][moves[i]-1]){
                    if(pocket.length > 0) {
                        result += 2;
                        pocket.pop();
                        cur = pocket[pocket.length-1];
                    } else {
                        cur = 0;
                    }
                } else {
                    pocket.push(board[j][moves[i]-1]);
                    cur = board[j][moves[i]-1];
                } 
                board[j][moves[i]-1] = 0;
                break;
            }
        }
    }
    return result;
}