Notice
Recent Posts
Recent Comments
Link
ยซ   2025/01   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
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 29 30 31
Archives
Today
Total
๊ด€๋ฆฌ ๋ฉ”๋‰ด

Lennon FE

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํ”„๋ Œ์ฆˆ 4๋ธ”๋ก (javascript) ๋ณธ๋ฌธ

๐Ÿ”ฅ Algorithm/Programmers

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํ”„๋ Œ์ฆˆ 4๋ธ”๋ก (javascript)

Lennon 2021. 9. 25. 17:58
728x90
๋ฐ˜์‘ํ˜•

https://programmers.co.kr/learn/courses/30/lessons/17679

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - [1์ฐจ] ํ”„๋ Œ์ฆˆ4๋ธ”๋ก

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

programmers.co.kr

๋ฌธ์ œ ์„ค๋ช…

ํ”„๋ Œ์ฆˆ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๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค.

์ถœ๋ ฅ ํ˜•์‹

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

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

mnboardanswer

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) {
    let boardArr = [];
    let count = 0;
    let arr = [];
    
    for(let i = 0; i < board.length; i++) boardArr.push(board[i].split(""));
     // 2์ฐจ์› ๋ฐฐ์—ด ์„ ์–ธ
    
    while(true){
        for(let i = 0; i < m; i++){
            for(let j = 0; j < n; j++){
                if(i !== m - 1 && j !== n-1 && boardArr[i][j] !== 0 && (boardArr[i][j].repeat(3) === 
                   boardArr[i][j+1] + boardArr[i+1][j] + boardArr[i+1][j+1])){
                   arr.push({x : j, y : i, value : boardArr[i][j]});
                   arr.push({x : j+1, y : i, value : boardArr[i][j]});
                   arr.push({x : j, y : i+1, value : boardArr[i][j]});
                   arr.push({x : j+1, y : i+1, value : boardArr[i][j]});    
                }
            }
        }
        if(arr.length === 0) break; // ์‚ฌ๋ผ์ง€์ง€ ์•Š์œผ๋ฉด ๋
        
        for(let i = 0; i < arr.length; i++){
           for(let j = 0; j < arr.length; j++){
               if(i !== j && arr[i].x === arr[j].x && arr[i].y === arr[j].y && arr[i].value === arr[j].value)
                   arr.splice(i, 1);
           }
        }  // ๊ฐ์ฒด ์ค‘๋ณต ์ œ๊ฑฐ(ex ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค 2๋ฒˆ ์งธ ๋ผ์ด์–ธ)
        count += arr.length;
        for(let i = 0; i < arr.length; i++) {
            boardArr[arr[i].y][arr[i].x] = 0;
        }
         // ๊ฐ์ฒด์˜ ๊ฐ’์— 0 ๋Œ€์ž…
        for(let i = m-1; i >= 0; i--){
            for(let j = 0; j < n; j++){
                if(boardArr[i][j] === 0){
                   for(let k = i - 1; k >= 0; k--){
                       if(boardArr[k][j] !== 0){
                           boardArr[i][j] = boardArr[k][j];
                           boardArr[k][j] = 0;
                           break;
                       }
                   }
                }
            }
        } // ๊ฐ’์„ ์•„๋ž˜๋กœ ๋ฐˆ
        
        arr = []; // arr ์ดˆ๊ธฐํ™”
    }
    
    return count;
}

๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ๋ชป ์ฐพ์•„์„œ ๋ฌด์ง€์„ฑ์œผ๋กœ ๋ฐ˜๋ณต๋ฌธ์„ ๋ฐ˜๋ณตํ•ด๋ฒ„๋ ธ๋‹ค.. ํšจ์œจ์„ฑ ๋ฌธ์ œ๋Š” ์•„๋‹ˆ์—ˆ์ง€๋งŒ ์ข‹์€ ์ฝ”๋“œ๊ฐ€ ์•„๋‹Œ ๊ฑด ํ™•์‹คํ•˜๋‹ค

 

 

 

=> ํ•จ์ˆ˜๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ํšจ์œจ์ ์œผ๋กœ ๋‹ค์‹œ ํ’€์—ˆ์Œ

 

https://parkparkpark.tistory.com/28

 

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] 1์ฐจ ํ”„๋ Œ์ฆˆ4๋ธ”๋ก (js)

https://programmers.co.kr/learn/courses/30/lessons/17679/solution_groups?language=javascript ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋ก..

parkparkpark.tistory.com

 

728x90
๋ฐ˜์‘ํ˜•
Comments