알고리즘

[BOJ]2292번 - 벌집(JS)

로돌씨 2024. 5. 26. 22:24

문제

풀이

const fs = require("fs");
let input = fs.readFileSync("/dev/stdin").toString().trim().split("\n").map(Number);
let N = parseInt(input);

let range = 1 , block = 1;

while (block < N){
    block += 6 * range;
    range ++;
}
console.log(range);

알고리즘을 생각했을때에 6의 배수씩 증가하는 배열을만들어 N에 해당하는 값이 그 배열에 속해있으면 그 배열의 인덱스를 가져올생각으로 짰었는데 이것역시 배열을 얼만큼이나 할당을해야할지 ... 그리고 반복문을 많이 쓰다보니 시간도 오래걸리고 컴파일 에러가 났었다. 

그냥 while문을 사용해 block의 크기가 N보다 커지면 멈추는 반복문을 사용해 간단히 해결 가능했다...

while문 ... 쉬운듯 헷갈리면서 응용하기가 너무어렵다. 조금더 응용할만한 방안을 생각해봐야겠다. 처음문제를 보았을때는 while문을 사용해야겠구나 하면서도 막상 while문을 사용하려니 어떻게 사용해야할지 감이안왔다 ㅠㅠ