본문 바로가기

백준2292 - 벌집 JS 본문

개발/algorithm

백준2292 - 벌집 JS

자전하는명왕성 2023. 9. 23. 10:03

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

 

해당 문제는 반복문을 통해 문제를 해결하려고 하면 시간 초과가 나게 되므로 규칙성을 찾아 해결해야 한다.

 

중심을 시작으로 각 거리마다 가장 큰 값이 [1, 7, 19, 37, 61]인 것을 보아, 

6n[6, 12, 18, 24...]씩 증가하고 있음을 확인할 수 있으므로 이를 활용해 문제를 해결하면 된다.

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

function solution(data) {
  // sum 의 초깃값이 1인 이유는, 벌집 가장 가운데 있는 값이 1이기 때문
  let [distance, sum] = [1,1]
  
  // sum >= data 를 만족할 때까지
  // distance를 증가시키며 누산해주면 된다
  while(sum < data) {
    sum += 6 * distance++
  }

  console.log(distance)
}

solution(input)

 

'개발 > algorithm' 카테고리의 다른 글

백준14501 - 퇴사(DP) JS  (0) 2023.09.25
백준1158 - 요세푸스 문제 (queue) JS  (0) 2023.09.24
백준9324 - 진짜메시지 JS  (0) 2023.09.22
백준1063 - 킹 JS  (1) 2023.09.21
백준3107 - IPv6 JS  (0) 2023.09.20
Comments