백준, 2292번 벌집, Javascript

cptkuk91·2023년 2월 16일
1

Algorithm

목록 보기
138/161

문제

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

코드

const input = require("fs").readFileSync("/dev/stdin");

honeyHouse(input);

function honeyHouse(number){
    number;
    let block = 1;
    let result = 1;
    // 27
    while(true){
        if(number <= block){
            break;
        }
        block = block + result * 6;
        // 1 = 1 + 6 => 7
        // 7 = 7 + 12 => 19
        // 19 = 19 + 18 => 37
        result++;
        // 2
        // 3
        // 4
    }
    console.log(result);
}

풀이

규칙을 우선 파악하는게 중요하다고 생각합니다. 1을 기준으로 + 6까지는 1칸을 이동해 이동할 수 있습니다. 문제에서 알 수 있듯 1을 기준으로 이동하기 때문에 result 값을 0이 아닌 1로 설정했습니다. while문을 통해 입력받은 값이 block과 작거나, 같아졌을 때(크면 X) 중단하고 block값을 반복문이 돌 때 block + result * 6을 통해서 증가시켰습니다. 이후 result++을 통해 이동한 칸을 파악합니다. 주석을 보면 2~7까지는 1칸, 8~19까지는 2칸 이때 result값은 2, 3 증가를 통해 하나씩 파악해갑니다. 그럼 원하는 결과값을 얻을 수 있습니다.

profile
메일은 매일 확인하고 있습니다. 궁금하신 부분이나 틀린 부분에 대한 지적사항이 있으시다면 언제든 편하게 연락 부탁드려요 :)

0개의 댓글