๐Ÿ’› JavaScript/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[JS] ์—ฐ์Šต๋ฌธ์ œ - ๊ฐ€์žฅ ํฐ ์ •์‚ฌ๊ฐํ˜• ์ฐพ๊ธฐ

Jayden1116 2022. 7. 10. 00:55
function solution(board) {
  let row = board.length;
  let column = board[0].length;

  if (row <= 1 || column <= 1) return 1;

  let answerLength = 0;
  for (let i = 1; i < row; i++) {
    for (let j = 1; j < column; j++) {
      if (board[i][j] >= 1) {
        let cross = board[i - 1][j - 1];
        let up = board[i - 1][j];
        let left = board[i][j - 1];
        if (cross >= 1 && up >= 1 && left >= 1) {
          board[i][j] = Math.min(cross, up, left) + 1;
        }
        answerLength = Math.max(answerLength, board[i][j]);
      }
    }
  }
  return answerLength ** 2;
}

 

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

 

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

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

  1. ์ฃผ์–ด์ง„ ๋ฐฐ์—ด์—์„œ 0๋ฒˆ์งธ๊ฐ€ ์•„๋‹Œ i = 1, j = 1๋ถ€ํ„ฐ ๊ธฐ์ค€์„ ์žก์Šต๋‹ˆ๋‹ค.
  2. ๊ทธ ๊ธฐ์ค€์ ์ด 1 ์ด์ƒ์ผ ๋•Œ, ์™ผ์ชฝ์œ„ ๋Œ€๊ฐ์„ , ์œ„, ์™ผ์ชฝ ์„ธ ๋ถ€๋ถ„์˜ ๊ฐ’์ด ๋ชจ๋‘ 1 ์ด์ƒ์ธ ๊ฒฝ์šฐ ๊ทธ ๊ธฐ์ค€์ ์— ์„ธ ๊ตฐ๋ฐ์˜ ๊ฐ’์ค‘ ์ž‘์€ ๊ฐ’์— + 1์„ ํ•œ ๊ฐ’์„ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.
  3. ์ตœ์ข…์ ์œผ๋กœ ๊ทธ ๋์˜ ๊ฐ’์— ์ •์‚ฌ๊ฐํ˜•์˜ ๋ณ€์˜ ๊ธธ์ด๊ฐ€ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค. ๊ทธ ๊ฐ’์˜ ์ œ๊ณฑ์„ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.

 

๊ฐœ์ธ์ ์œผ๋กœ ๋ฌธ์ œ ์ž์ฒด์˜ ์˜๋„๋ฅผ ์•Œ๊ฒ ์œผ๋‚˜ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค ๋ถ€๋ถ„์—์„œ ์•„์‰ฌ์šด ์ ๋“ค์ด ๋งŽ์€ ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค.
์œ„ ์ฝ”๋“œ๋กœ๋Š” ๋‹ค ํ†ต๊ณผ๊ฐ€ ๋˜์ง€๋งŒ ํ˜น์‹œ ๋†“์นœ ๋ถ€๋ถ„์€ ์—†์„๊นŒ ์ƒ๊ฐํ•ด๋ดค๋Š”๋ฐ
์˜ˆ๋ฅผ ๋“ค์–ด, ์ฒซ์งธ ํ–‰ ํ˜น์€ ์ฒซ์งธ ์—ด์— 1์ด ํ•˜๋‚˜๋ผ๋„ ์žˆ๊ณ  ๊ทธ ์™ธ์—๋Š” ์ „๋ถ€ 0์ธ ๊ฒฝ์šฐ ๋ถ„๋ช…ํžˆ 1์„ ๋ฆฌํ„ดํ•ด์•ผํ•˜๋Š”๋ฐ(์•„๋ฌดํŠผ 1์ด ํ•˜๋‚˜ ์žˆ์œผ๋‹ˆ ๊ฐ€์žฅ ํฐ ์ •์‚ฌ๊ฐํ˜•์˜ ๋„“์ด๋Š” 1์ด๊ธฐ ๋•Œ๋ฌธ์—) ์œ„ ์ฝ”๋“œ๋Š” 0์„ ๋ฆฌํ„ดํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
์ด ๋ถ€๋ถ„์„ ํ•ด๊ฒฐํ•˜๊ณ  ์‹ถ์–ด board.flat().find((x) => x === 1)์ด true์™€ false๋ฅผ ๋‚˜๋ˆ ์„œ ์ฒ˜๋ฆฌํ•˜๋ ค ํ•˜์˜€๋Š”๋ฐ ์‹œ๊ฐ„ ๋ณต์žก๋„๋กœ ํšจ์œจ์„ฑ์—์„œ ์ดˆ๊ณผ๊ฐ€ ๋‚˜์˜ต๋‹ˆ๋‹ค.