본문 바로가기
코딩테스트(알고리즘)/baekjoon

[baekjoon] 1992 쿼드트리 (javascript)

by Cafe Mocha 2023. 1. 11.

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

 

1992번: 쿼드트리

첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1 ≤ N ≤ 64의 범위를 가진다. 두 번째 줄부터는 길이 N의 문자열이 N개 들어온다. 각 문자열은 0 또

www.acmicpc.net


알고리즘 : 재귀

 

재귀문제는 항상 어려운 것 같다.

문제를 이해하고 풀었으나, 혼자 다 풀지 못하고 c++로된 자료를 참고해서 이해하고 다시 풀어서 맞췄다.

bfs,dfs문제에 익숙해지면 재귀문제를 집중적으로 풀어봐야겠다.

 

 

let input = require("fs")
  .readFileSync("input.txt") //"/dev/stdin"
  .toString()
  .split("\n")
  .map((val) => val.trim());

let n = +input.shift();
let graph = input.map(v=>v.split("").map(v=>+v));

const quard = (y,x,size)=>{
  if(size===1) return graph[y][x];
  let temp = graph[y][x];
  let result = "";
  for(let i=y;i<y+size;i++){
    for(let j=x;j<x+size;j++){
      if(temp!==graph[i][j]){
        result+="(";
        result+=quard(y,x,size/2);
        result+=quard(y,x+size/2,size/2);
        result+=quard(y+size/2,x,size/2);
        result+=quard(y+size/2,x+size/2,size/2);
        result+=")";
        return result;
      }
    }
  }
  return graph[y][x];

}

function solution() {
  console.log(quard(0,0,n));
}

solution();