본문 바로가기

백준1895 - 필터 (완전탐색) node.js 본문

개발/algorithm

백준1895 - 필터 (완전탐색) node.js

자전하는명왕성 2024. 3. 14. 09:54

https://www.acmicpc.net/problem/1895

 

문제 해결 방식

문제에서 주어진 N * M 크기의 이미지를 모두 3 * 3의 크기로 분할한 뒤, 해당 구간에 포함된 모든 원소를 정렬하여 중앙값을 구하고

해당 중앙값이 T보다 크거나 같다면 결괏값에 추가하는 방식으로 로직을 구현하였다.

 

전체 소스 코드

const fs = require("fs");
const input = fs
  .readFileSync(process.platform === "linux" ? "/dev/stdin" : "입력.txt")
  .toString()
  .trim()
  .split("\n");

function solution(data) {
  const T = +data.pop();
  const [[N, M], ...arr] = data.map((el) => el.split(" ").map(Number));
  let result = 0;

  for (let i = 0; i < N - 2; i++) {
    for (let j = 0; j < M - 2; j++) {
      const temp = [];
      for (let k = i; k < i + 3; k++) {
        for (let l = j; l < j + 3; l++) {
          temp.push(arr[k][l]);
        }
      }

      temp.sort((a, b) => a - b);
      if (temp[4] >= T) result++;
    }
  }

  console.log(result);
}

solution(input);
Comments