๊ด€๋ฆฌ ๋ฉ”๋‰ด

๐Ÿ–ฅ dev-ruby

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค][Lv.2] [1์ฐจ] ํ”„๋ Œ์ฆˆ 4๋ธ”๋ก - ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ | 2018 KAKAO BLIND RECRUITMENT ๋ณธ๋ฌธ

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

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค][Lv.2] [1์ฐจ] ํ”„๋ Œ์ฆˆ 4๋ธ”๋ก - ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ | 2018 KAKAO BLIND RECRUITMENT

ruby_s 2021. 12. 28. 14:05
728x90
๋ฐ˜์‘ํ˜•
SMALL

๋ฌธ์ œ ์„ค๋ช…

ํ”„๋ Œ์ฆˆ4๋ธ”๋ก

๋ธ”๋ผ์ธ๋“œ ๊ณต์ฑ„๋ฅผ ํ†ต๊ณผํ•œ ์‹ ์ž… ์‚ฌ์› ๋ผ์ด์–ธ์€ ์‹ ๊ทœ ๊ฒŒ์ž„ ๊ฐœ๋ฐœ ์—…๋ฌด๋ฅผ ๋งก๊ฒŒ ๋˜์—ˆ๋‹ค. ์ด๋ฒˆ์— ์ถœ์‹œํ•  ๊ฒŒ์ž„ ์ œ๋ชฉ์€ "ํ”„๋ Œ์ฆˆ4๋ธ”๋ก".
๊ฐ™์€ ๋ชจ์–‘์˜ ์นด์นด์˜คํ”„๋ Œ์ฆˆ ๋ธ”๋ก์ด 2×2 ํ˜•ํƒœ๋กœ 4๊ฐœ๊ฐ€ ๋ถ™์–ด์žˆ์„ ๊ฒฝ์šฐ ์‚ฌ๋ผ์ง€๋ฉด์„œ ์ ์ˆ˜๋ฅผ ์–ป๋Š” ๊ฒŒ์ž„์ด๋‹ค.


๋งŒ์•ฝ ํŒ์ด ์œ„์™€ ๊ฐ™์ด ์ฃผ์–ด์งˆ ๊ฒฝ์šฐ, ๋ผ์ด์–ธ์ด 2×2๋กœ ๋ฐฐ์น˜๋œ 7๊ฐœ ๋ธ”๋ก๊ณผ ์ฝ˜์ด 2×2๋กœ ๋ฐฐ์น˜๋œ 4๊ฐœ ๋ธ”๋ก์ด ์ง€์›Œ์ง„๋‹ค. ๊ฐ™์€ ๋ธ”๋ก์€ ์—ฌ๋Ÿฌ 2×2์— ํฌํ•จ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ง€์›Œ์ง€๋Š” ์กฐ๊ฑด์— ๋งŒ์กฑํ•˜๋Š” 2×2 ๋ชจ์–‘์ด ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ๋‹ค๋ฉด ํ•œ๊บผ๋ฒˆ์— ์ง€์›Œ์ง„๋‹ค.

๋ธ”๋ก์ด ์ง€์›Œ์ง„ ํ›„์— ์œ„์— ์žˆ๋Š” ๋ธ”๋ก์ด ์•„๋ž˜๋กœ ๋–จ์–ด์ ธ ๋นˆ ๊ณต๊ฐ„์„ ์ฑ„์šฐ๊ฒŒ ๋œ๋‹ค.

๋งŒ์•ฝ ๋นˆ ๊ณต๊ฐ„์„ ์ฑ„์šด ํ›„์— ๋‹ค์‹œ 2×2 ํ˜•ํƒœ๋กœ ๊ฐ™์€ ๋ชจ์–‘์˜ ๋ธ”๋ก์ด ๋ชจ์ด๋ฉด ๋‹ค์‹œ ์ง€์›Œ์ง€๊ณ  ๋–จ์–ด์ง€๊ณ ๋ฅผ ๋ฐ˜๋ณตํ•˜๊ฒŒ ๋œ๋‹ค.

์œ„ ์ดˆ๊ธฐ ๋ฐฐ์น˜๋ฅผ ๋ฌธ์ž๋กœ ํ‘œ์‹œํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

TTTANT
RRFACC
RRRFCC
TRRRAA
TTMMMF
TMMTTJ

๊ฐ ๋ฌธ์ž๋Š” ๋ผ์ด์–ธ(R), ๋ฌด์ง€(M), ์–ดํ”ผ์น˜(A), ํ”„๋กœ๋„(F), ๋„ค์˜ค(N), ํŠœ๋ธŒ(T), ์ œ์ด์ง€(J), ์ฝ˜(C)์„ ์˜๋ฏธํ•œ๋‹ค

์ž…๋ ฅ์œผ๋กœ ๋ธ”๋ก์˜ ์ฒซ ๋ฐฐ์น˜๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ง€์›Œ์ง€๋Š” ๋ธ”๋ก์€ ๋ชจ๋‘ ๋ช‡ ๊ฐœ์ธ์ง€ ํŒ๋‹จํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ œ์ž‘ํ•˜๋ผ.

์ž…๋ ฅ ํ˜•์‹

  • ์ž…๋ ฅ์œผ๋กœ ํŒ์˜ ๋†’์ด m, ํญ n๊ณผ ํŒ์˜ ๋ฐฐ์น˜ ์ •๋ณด board๊ฐ€ ๋“ค์–ด์˜จ๋‹ค.
  • 2 โ‰ฆ n, m โ‰ฆ 30
  • board๋Š” ๊ธธ์ด n์ธ ๋ฌธ์ž์—ด m๊ฐœ์˜ ๋ฐฐ์—ด๋กœ ์ฃผ์–ด์ง„๋‹ค. ๋ธ”๋ก์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฌธ์ž๋Š” ๋Œ€๋ฌธ์ž A์—์„œ Z๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค.

์ถœ๋ ฅ ํ˜•์‹

์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„ ํŒ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ๋ช‡ ๊ฐœ์˜ ๋ธ”๋ก์ด ์ง€์›Œ์งˆ์ง€ ์ถœ๋ ฅํ•˜๋ผ.

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

m n board answer
4 5 ["CCBDE", "AAADE", "AAABF", "CCBBF"] 14
6 6 ["TTTANT", "RRFACC", "RRRFCC", "TRRRAA", "TTMMMF", "TMMTTJ"] 15

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

  • ์ž…์ถœ๋ ฅ ์˜ˆ์ œ 1์˜ ๊ฒฝ์šฐ, ์ฒซ ๋ฒˆ์งธ์—๋Š” A ๋ธ”๋ก 6๊ฐœ๊ฐ€ ์ง€์›Œ์ง€๊ณ , ๋‘ ๋ฒˆ์งธ์—๋Š” B ๋ธ”๋ก 4๊ฐœ์™€ C ๋ธ”๋ก 4๊ฐœ๊ฐ€ ์ง€์›Œ์ ธ, ๋ชจ๋‘ 14๊ฐœ์˜ ๋ธ”๋ก์ด ์ง€์›Œ์ง„๋‹ค.
  • ์ž…์ถœ๋ ฅ ์˜ˆ์ œ 2๋Š” ๋ณธ๋ฌธ ์„ค๋ช…์— ์žˆ๋Š” ๊ทธ๋ฆผ์„ ์˜ฎ๊ธด ๊ฒƒ์ด๋‹ค. 11๊ฐœ์™€ 4๊ฐœ์˜ ๋ธ”๋ก์ด ์ฐจ๋ก€๋กœ ์ง€์›Œ์ง€๋ฉฐ, ๋ชจ๋‘ 15๊ฐœ์˜ ๋ธ”๋ก์ด ์ง€์›Œ์ง„๋‹ค.

 

๋‚ด๊ฐ€ ํ‘ผ ํ’€์ด

function solution(m, n, board) {
    board = board.map(x => x.split(''));
    while(true){
        // ๋ธ”๋ก ์ฐพ๊ธฐ
        let blockIdxSet = [];
        for(let i=0; i<m-1; i++){
            for(let j=0; j<n-1; j++){
                if(board[i][j]
                   && board[i][j] === board[i+1][j]
                   && board[i][j] === board[i][j+1]
                   && board[i][j] === board[i+1][j+1]){
                    blockIdxSet.push([i, j, i+1, j+1]);
                }
            }
        }
        if(!blockIdxSet.length) return board.reduce((acc, curr) => acc + curr.filter((block) => !block).length, 0);
        // ๋ธ”๋ก ์ง€์šฐ๊ธฐ
        for(const block of blockIdxSet){
            board[block[0]][block[1]] = 0;
            board[block[0]][block[3]] = 0;
            board[block[2]][block[1]] = 0;
            board[block[2]][block[3]] = 0;
        }
        // ๋ธ”๋ก ๋‚ด๋ฆฌ๊ธฐ
        let count = 1;
        while(count > 0){
            count=0;
            for(let i=1; i<m; i++){
                for(let j=0; j<n; j++){
                    if(!board[i][j] && board[i-1][j]){   // 0์ผ ๊ฒฝ์šฐ
                        board[i][j] = board[i-1][j];
                        board[i-1][j] = 0;
                        count++;
                    }
                }
            }
        }
    }
}

์ข€ ํž˜๋“ค์—ˆ๋‹ค .. ์ฝ”๋“œ๊ฐ€ 30์ค„์ด ๋„˜๋Š” ๋ฌธ์ œ๋Š” ์•„์ง ๋‚˜์—๊ฒ ์–ด๋ ต๋‹ค..
๋ถ„๋ฐœํ•˜์Ÿˆ

๋ธ”๋ก ๋‚ด๋ฆฌ๋Š” ๋ถ€๋ถ„์— while๋ฌธ ์—†์ด ํ•œ์ค„ ํ•œ์ค„์”ฉ ๋ฐ˜๋ณตํ•˜๋ฉด์„œ 0์ผ ๊ฒฝ์šฐ ์œ„์—๊บผ๋ฅผ ๋‚ด๋ฆฌ๋Š” ๋ฐฉ์‹์„ ํƒํ–ˆ๋Š”๋ฐ,
๊ทธ๋Ÿฌ๋ฉด ์—ฌ๋Ÿฌ๊ฐœ๋ฅผ ํ•œ๋ฒˆ์— ๋‚ด๋ ค์•ผํ•  ๋•Œ ํ•œ๊ฐœ๋งŒ ๋‚ด๋ ค๊ฐ€๊ฒŒ๋œ๋‹ค..
๊ทธ๋ž˜์„œ while์†์— count๋กœ ํŒ๋‹จํ•ด์ฃผ์–ด ๊ณ„์† ๋ฐ˜๋ณต์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ํ–ˆ๋‹ค..!
728x90
๋ฐ˜์‘ํ˜•
LIST