๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

ํ”„์—” ๊ณต๋ถ€/๐Ÿซง ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€

[์•Œ๊ณ ๋ฆฌ์ฆ˜ || ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํฌ๋ ˆ์ธ ์ธํ˜• ๋ฝ‘๊ธฐ ๊ฒŒ์ž„

728x90

์˜ค๋Š˜์€ ๊ฐ•์˜์—์„œ ๋ฐฐ์šด ๋Œ€๋กœ

๋จผ์ € ์–ด๋–ค๊ฒŒ ์ฃผ์–ด์กŒ๊ณ , ์–ด๋–ค ๊ฑธ ๊ตฌํ•ด์•ผ ํ•˜๋Š”์ง€ ์ •๋ฆฌ๋ฅผ ๋จผ์ € ํ•ด๋‘๊ณ , 

๊ทธ ๋‹ค์Œ์— ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ•ด์•ผ ํ•˜๋Š”์ง€ ์จ๋ดค๋‹ค. 

์ด ๊ณผ์ •๋„ ํ…Œ์ŠคํŠธ์˜ ์ผ๋ถ€๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ณ  ์“ฐ๋‹ˆ ๋‹จ๊ณ„๋ณ„๋กœ ์ฐจ๊ทผ์ฐจ๊ทผ ์“ธ ์ˆ˜ ์žˆ์—ˆ๋‹ค. 

 

0. 2์ฐจ์› ๋ฐฐ์—ด๊ณผ 1์ฐจ์› ๋ฐฐ์—ด์ด ์ฃผ์–ด์ง„๋‹ค. / return ํ•˜๋Š” ๊ฑด count ๋œ ์ˆซ์ž
1. 2์ฐจ์› ๋ฐฐ์—ด์—์„œ moves ๋ฐฐ์—ด์˜ ํ–‰ ์ค‘ ๊ฐ€์žฅ ์œ„์— ์žˆ๋Š” ์ˆ˜ ์ค‘ 0 ์ด ์•„๋‹Œ ์ˆ˜ ๋ฅผ ์ฐพ๋Š”๋‹ค.
2. ์ž„์˜์˜ ๋ฐ”๊ตฌ๋‹ˆ array ๋ฅผ ๋งŒ๋“ ๋‹ค.
3. 1๋ฒˆ์—์„œ ์ฐพ์€ 0์ด ์•„๋‹Œ ์ˆ˜๋ฅผ array ์— ๋„ฃ๋Š”๋‹ค.
4. ๋ฐ”๊ตฌ๋‹ˆ์—์„œ ๊ฐ™์€ ์ˆ˜2๊ฐœ๊ฐ€ ์žˆ๋‹ค๋ฉด ์ œ๊ฑฐํ•œ๋‹ค.
5. ์ œ๊ฑฐ ๋œ ์ธํ˜•์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค. (์ œ๊ฑฐ๋˜๋Š” ๊ณผ์ •์ด ๋ฐ˜๋ณต๋œ ์ˆ˜ *2 ๋ฅผ ํ•ด๋„ ๋จ)

 

4๋ฒˆ์€ ๋”ฐ๋กœ ์ง„ํ–‰ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค 3๋ฒˆ์„ ์ง„ํ–‰ํ•˜๋ฉด์„œ ํ™•์ธํ•˜๋ฉฐ ์ง„ํ–‰ํ•˜๋Š”๊ฒŒ ๋” ๊ฐ„ํŽธํ• ๊ฑฐ๋ž€ ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.

function solution(board, moves) {
    const basket = [];
    let count = 0;
    moves.forEach(move => {
        for (let i = 0; i < board.length; i++) {
            if (board[i][move - 1] !== 0) {
                if (basket[basket.length - 1] === board[i][move - 1]) {
                    count++;
                    basket.pop();
                } else {
                    basket.push(board[i][move - 1]);
                }
                board[i][move - 1] = 0;
                break;
            }
        }
    });
    return count * 2
}

 

moves ์˜ ์ˆ˜๋“ค์„ ๊ธฐ์ค€์œผ๋กœ board ์—์„œ ์ˆ˜๋ฅผ ์ฐพ๋Š”๋‹ค.

moves ์˜ ์ˆ˜์ธ move ๋ฅผ ๊ณ ์ •ํ•ด๋†“์€ ์ƒํƒœ์—์„œ

for ๋ฌธ์„ ๋Œ๋ ค 2์ฐจ์› ๋ฐฐ์—ด์ธ board ๋ฅผ ํƒ์ƒ‰ํ•œ๋‹ค.

0์ด ์•„๋‹Œ ์ˆ˜์ผ ๊ฒฝ์šฐ

- ๋งŒ์•ฝ basket ์— ์žˆ๋Š” ๋งˆ์ง€๋ง‰ ์ˆ˜์™€ ๋ฐœ๊ฒฌํ•œ ์ˆ˜๊ฐ€ ๊ฐ™๋‹ค๋ฉด, basket ์—์„œ ๊ทธ ์ˆ˜๋ฅผ ์ œ๊ฑฐํ•ด์ฃผ๊ณ  count ๋ฅผ +1 ํ•ด์ค€๋‹ค.

- ๋งŒ์•ฝ basket ์— ์žˆ๋Š” ๋งˆ์ง€๋ง‰ ์ˆ˜์™€ ๋ฐœ๊ฒฌํ•œ ์ˆ˜๊ฐ€ ๋‹ค๋ฅด๋‹ค๋ฉด, basket ์— ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค.

์–ด์จŒ๋“  0์ด ์•„๋‹Œ ์ˆ˜๊ฐ€ ๋‚˜์™”๊ธฐ ๋•Œ๋ฌธ์— ๋ฝ‘๊ธฐ๊ฐ€ ์‹คํ–‰๋˜๊ณ , board ์˜ ์ž๋ฆฌ์— 0์„ ๋„ฃ์–ด์ค€ ๋’ค, break ๋กœ for ๋ฌธ์„ ์ค‘๋‹จํ•œ๋‹ค.

 

count ๋Š” ๊ฐ™์€ ์ˆ˜๋ฅผ ๋งŒ๋‚˜ ์ œ๊ฑฐ๊ฐ€ ์‹คํ–‰๋œ ์ˆ˜์ด๊ธฐ ๋•Œ๋ฌธ์—, 

์ธํ˜•์˜ ์ˆ˜๋ฅผ return ํ•˜๊ธฐ ์œ„ํ•ด *2๋ฅผ ๊ณฑํ•œ๋‹ค.

์ธํ˜•์€ 2๊ฐœ๊ฐ€ ๋งŒ๋‚˜๋ฉด ๋ฌด์กฐ๊ฑด ์‚ฌ๋ผ์ง€๊ธฐ ๋•Œ๋ฌธ์— 3์ฝค๋ณด ๋“ฑ์€ ๊ณ ๋ คํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. 

 

728x90
๋ฐ˜์‘ํ˜•