ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๋ฌธ์ œ

 ์ง€๋„ ์ •๋ณด๊ฐ€ N*N ๊ฒฉ์žํŒ์— ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ๊ฒฉ์ž์—๋Š” ๊ทธ ์ง€์—ญ์˜ ๋†’์ด๊ฐ€ ์“ฐ์—ฌ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๊ฒฉ์žํŒ์˜ ์ˆซ์ž ์ค‘ ์ž์‹ ์˜ ์ƒํ•˜์ขŒ์šฐ ์ˆซ์ž๋ณด๋‹ค ํฐ ์ˆซ์ž

 ๋Š” ๋ด‰์šฐ๋ฆฌ ์ง€์—ญ์ด๋‹ค. ๋ด‰์šฐ๋ฆฌ ์ง€์—ญ์ด ๋ช‡ ๊ฐœ ์žˆ๋Š”์ง€ ์•Œ์•„๋‚ด๊ณ ์ž ํ•œ๋‹ค.

 (๊ฒฉ์ž์˜ ๊ฐ€์žฅ์ž๋ฆฌ๋Š” 0์œผ๋กœ ์ดˆ๊ธฐํ™” ๋˜์—ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค.)

 

๋ฌธ์ œํ’€์ด

๊ฒฉ์ž์˜ ๊ฐ€์žฅ์ž๋ฆฌ๋Š” 0์œผ๋กœ ์ดˆ๊ธฐํ™”๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋†’์ด๋ฅผ ๋น„๊ตํ•  ํ•„์š”๊ฐ€ ์—†์ด ์ด๋ณด๋‹ค ํ•ญ์ƒ ํฌ๋‹ค.

 

๊ฒฉ์ž์˜ ๊ฐ€์žฅ์ž๋ฆฌ์ธ 0์— ์ธ์ ‘ํ•œ ์˜์—ญ(๋ณด๋ผ์ƒ‰)๊ณผ ๊ทธ๋ ‡์ง€ ์•Š์€ ์˜์—ญ(์ฃผํ™ฉ์ƒ‰)์„ ๋‘ ๊ฐœ๋กœ ๋‚˜๋ˆ  ๋ฐ˜๋ณต๋ฌธ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

๊ฒฉ์ž์˜ ๊ฐ€์žฅ์ž๋ฆฌ์ธ 0์— ์ธ์ ‘ํ•œ ์˜์—ญ์€ ์ธ๋ฑ์Šค ๊ฐ’์— ๋”ฐ๋ผ ๊ฐ ๋ฐฉํ–ฅ์—์„œ ์ œ์™ธ๋˜๋Š” ์˜์—ญ์ด ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

(๋น„๊ตํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฐ’์€ ์–ธ์ œ๋‚˜ 0๋ณด๋‹ค๋Š” ํฌ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค)

 

์ด๋•Œ ๊ฒฉ์ž์˜ ๊ฐ€์žฅ์ž๋ฆฌ 0์— ์ธ์ ‘ํ•œ ์˜์—ญ ์ค‘ 4๊ตฐ๋ฐ์˜ ๋ชจ์„œ๋ฆฌ ์˜์—ญ(5, 3, 8, 2)๋Š” ๊ฐ๊ฐ ๋‹ค๋ฅธ ๋ฐฉํ–ฅ์œผ๋กœ ๋‘ ๊ตฐ๋ฐ์˜ ๊ฒฉ์ž์˜ ๊ฐ€์žฅ์ž๋ฆฌ์™€ ์ธ์ ‘ํ•ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹นํ•˜๋Š” ๋ฐฉํ–ฅ์˜ ์ธ๋ฑ์Šค๋Š” ๊ณ„์‚ฐ์—์„œ ์ œ์™ธํ•ด ์ค€๋‹ค.

 

๋น„๊ตํ•˜๊ณ ์ž ํ•˜๋Š” ์ค‘์‹ฌ ์š”์†Œ ๊ฐ’์ธ center[i][j]์—์„œ ๊ฐ ๋ฐฉํ–ฅ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

์œ„: (i - 1, j) 

์•„๋ž˜: (i +1, j)

์˜ค๋ฅธ์ชฝ: (i, j + 1)

์™ผ์ชฝ: (i, j - 1)

 

์ฝ”๋“œ

function solution(num, height) {
  let answer = [];
  let top, bottom, left, right;

  for (let i = 0; i < num; i++) {
    let max = 0;
    for (let j = 0; j < num; j++) {
      let center = height[i][j];
      if (i === 0) {
        bottom = height[i + 1][j];
        right = height[i][j + 1];
        left = height[i][j - 1];
        if (j === 0) {
          let max = Math.max(center, bottom, right);
          if (center === max) {
            answer.push(max);
          }
        } else if (j === 4) {
          let max = Math.max(center, bottom, left);
          if (center === max) {
            answer.push(max);
          }
        }
        let max = Math.max(center, bottom, right, left);
        if (center === max) {
          answer.push(max);
        }
      }
      if (i === 4) {
        top = height[i - 1][j];
        right = height[i][j + 1];
        left = height[i][j - 1];
        if (j === 0) {
          let max = Math.max(center, top, right);
          if (center === max) {
            answer.push(max);
          }
        } else if (j === 4) {
          let max = Math.max(center, top, left);
          if (center === max) {
            answer.push(max);
          }
        }
        let max = Math.max(center, top, right, left);
        if (center === max) {
          answer.push(max);
        }
      }
      if (0 < i && num - 1 > i) {
        if (j === 0) {
          top = height[i - 1][j];
          right = height[i][j + 1];
          bottom = height[i + 1][j];

          let max = Math.max(center, top, right);
          if (center === max) {
            answer.push(max);
          }
        } else if(j === 4) {
          top = height[i - 1][j];
          left = height[i][j - 1];
          bottom = height[i + 1][j];

          let max = Math.max(center, top, left);
          if (center === max) {
            answer.push(max);
          }
        }
      }
    }
  }
  top, bottom, left, (right = 0);
  for (let i = 1; i < num - 1; i++) {
    let max = 0;
    for (let j = 1; j < num - 1; j++) {
      let center = height[i][j];
      top = height[i - 1][j];
      bottom = height[i + 1][j];
      left = height[i][j - 1];
      right = height[i][j + 1];

      let max = Math.max(center, top, bottom, left, right);
      if (center === max) {
        answer.push(max);
      }
    }
  }

  return answer.length;
}

let height = [
  [5, 3, 7, 2, 3],
  [3, 7, 1, 6, 1],
  [7, 2, 5, 3, 4],
  [4, 3, 6, 4, 1],
  [8, 7, 3, 5, 2]
];
console.log(solution(5, height));

 

๊ฐœ์„ ์‚ฌํ•ญ

๊ฐ ๋ฐฉํ–ฅ๊ฐ’์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค์˜ ๊ฐ’์€ ํ•ญ์ƒ ๊ณ ์ •์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ์ˆ˜ํ–‰๋ฌธ์—์„œ ๊ณตํ†ต์ ์œผ๋กœ ์“ฐ์ผ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

 

๊ฒฉ์ž์˜ ๊ฐ€์žฅ์ž๋ฆฌ์ธ 0์— ์ธ์ ‘ํ•œ ์˜์—ญ๊ณผ ๊ทธ๋ ‡์ง€ ์•Š์€ ์˜์—ญ์„ ๋‘๊ฐœ๋กœ ๋‚˜๋ˆ  ๋ฐ˜๋ณต๋ฌธ์„ ์ˆ˜ํ–‰ํ•œ ๊ฒฐ๊ณผ ๋™์ผํ•œ ์—ฐ์‚ฐ๋“ค์ด ์ง„ํ–‰๋˜์–ด ์ฝ”๋“œ ์ƒ ํšจ์œจ์ ์ด์ง€ ๋ชปํ–ˆ๋‹ค. ์˜์—ญ์„ ๊ตฌ๋ถ„ํ•˜๊ธฐ ๋ณด๋‹จ 3์ค‘ for์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ๋งˆ์ง€๋ง‰ for๋ฌธ ๋‚ด์—์„œ ํ–‰๊ณผ ์—ด์— ๋Œ€ํ•œ ๋ฐฉํ–ฅ๊ฐ’๋“ค์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜์—ฌ ์ด๋ฅผ ํ†ตํ•ด ์ฐธ์กฐํ•˜๊ณ ์ž ํ•˜๋Š” ์ธ๋ฑ์Šค์˜ ๋†’์ด๊ฐ€ ๋ด‰์šฐ๋ฆฌ์— ํ•ด๋‹นํ•˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

 

๊ฒฉ์ž์˜ ๊ฐ€์žฅ์ž๋ฆฌ ์˜์—ญ๋“ค์ด ๋ด‰์šฐ๋ฆฌ์ธ์ง€ ํ™•์ธํ•  ๋•Œ, ๊ฐ ์ธ๋ฑ์Šค ๊ฐ’์— ๋”ฐ๋ผ ์ œ์™ธ๋˜๋Š” ๋ฐฉํ–ฅ์ด ์žˆ๋‹ค. ์ด๋•Œ ์ œ์™ธ๋˜๋Š” ๋ฐฉํ–ฅ๊ฐ’์€ index out of range ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.(0์€ ์‹ค์ œ ๋ฐฐ์—ด ๋‚ด์— ์š”์†Œ๋กœ ์กด์žฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ฐ€์ • ํ•˜์— ๋‘” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค) ๋ณธ ์—๋Ÿฌ๋ฅผ ์กฐ๊ฑด๋ฌธ์— ์ด์šฉํ•˜์—ฌ ํ•ด๋‹น ๋ฐฉํ–ฅ๊ฐ’์ด ๋ณธ ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค ๋ฒ”์œ„ ๋‚ด์—์„œ ๋ฒ—์–ด๋‚  ๊ฒฝ์šฐ์—” ๋น„๊ต ์—ฐ์‚ฐ์„ ํ•˜์ง€ ์•Š๊ณ  ๊ทธ๋Œ€๋กœ ๋‹ค์Œ ๋ฐ˜๋ณต๋ฌธ์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ•œ๋‹ค.

 

๋ด‰์šฐ๋ฆฌ๊ฐ€ ๋˜๊ธฐ ์œ„ํ•œ ์กฐ๊ฑด ์ƒ ์ธ์ ‘ํ•œ ์˜์—ญ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์ž์‹ ๋ณด๋‹ค ํฐ ๊ฐ’์„ ์ง€๋‹Œ ์š”์†Œ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ์—๋Š” ๋งŒ์กฑํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€์†Œ ๋น„๊ต ์‹œ ์ธ์ ‘ํ•œ ์˜์—ญ๋“ค ์ค‘์— ํ•˜๋‚˜๋ผ๋„ ํฐ ๊ฐ’์ด ์žˆ๋‹ค๋ฉด ํ•ด๋‹น ๊ฐ’์„ ์ •๋‹ต์—์„œ ์ œ์™ธํ•œ๋‹ค.

 

์ฝ”๋“œ

function solution(arr){  
                let answer=0;
                let n=arr.length;
                let dx=[-1, 0, 1, 0];
                let dy=[0, 1, 0, -1];
                for(let i=0; i<n; i++){
                    for(let j=0; j<n; j++){
                        let flag=1;
                        for(let k=0; k<4; k++){
                            let nx=i+dx[k];
                            let ny=j+dy[k];
                            if(nx>=0 && nx<n && ny>=0 && ny<n && arr[nx][ny]>=arr[i][j]){
                                flag=0;
                                break;
                            }
                        }
                        if(flag) answer++;
                    }
                }  
                  
                return answer;
            }

            let arr=[[5, 3, 7, 2, 3], 
                     [3, 7, 1, 6, 1],
                     [7, 2, 5, 3, 4],
                     [4, 3, 6, 4, 1],
                     [8, 7, 3, 5, 2]];
            console.log(solution(arr));
๋Œ“๊ธ€
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
TAG
more
ยซ   2025/02   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
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
๊ธ€ ๋ณด๊ด€ํ•จ