본문 바로가기

백준 2563 - 색종이 (set) JS 본문

개발/algorithm

백준 2563 - 색종이 (set) JS

자전하는명왕성 2023. 9. 14. 09:49

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

문제는 주어진 입력값으로 영역을 구하는 문제다.

 

100 * 100 사이즈의 배열을 생성하고 반복문으로 영역이 포함되는 좌표를 '색종이가 덮은' 영역으로 처리해줄 수 있지만,

이 경우는 '덮은 영역 처리', '덮은 영역 확인'으로 두 번의 연산이 필요하기에 그리 좋은 방식은 아니다.

 

때문에 나는 좌표를, 중복된 데이터를 허용하지 않는 Set() 생성자를 활용해 문제를 해결했다.

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

function solution(data) {
  data.shift()

  // Set() 생성자 생성
  const set = new Set()

  data.forEach((el)=> {
    const [x,y] = el.split(' ').map(Number)
    for(let i = 0 ; i < 10 ; i ++) {
      for(let j = 0 ; j < 10 ; j ++) {
      // set 에 데이터 추가
      // 이때 좌표를 저장하는 것이므로 ':'를 통해 x,y축을 구분했다
        set.add(`${x+j}:${y+i}``)
      }
    }
  })
// set에 담긴 데이터의 길이를 반환하는 size 메서드
  console.log(set.size)
}

solution(input)
Comments