[백준/BOJ] 2292번 벌집(Node js/javascript)
2023. 8. 25. 18:11ㆍ코딩 테스트 (BOJ)
처음 문제를 읽고 그림을 봤을때는 먼저 이동할때 보이는 숫자들의 규칙을 찾으려고 시도했다.
문제 해설
위 벌집을 아래와 같이 [1]을 1번째 layer, [2,3,4,5,6,7]을 2번째 layer , [20, ... , 37]을 layer 3이라고 해보자.
그럼 이제 이 찾으려는 숫자가 포함된 layer가 곧 1에서 해당 숫자로 몇번 이동해야 되는지를 나타낸다.
layer 1 : 1
layer 2 : 2 - 7 (6)
layer 3 : 8 - 19 (12)
layer 4 : 20 - 37 (18)
layer 5 : 38 - 61 (24)
그럼 위와같이 layer가 1씩 증가할때마다 layer에 속해있는 최소값과 최대값의 차이가 6씩 증가하는 규칙을 세울 수 있다.
Ex) layer 3의 최소값은 [layer 2의 최대값 + 1], 최대값은 [최소값 + 6 * 2 -1] 로 구할 수 있다.
이제 위 규칙을 통해 재귀함수로 로직을 짜보자.
전체코드
const fs = require("fs");
const input = fs.readFileSync("/dev/stdin").toString().trim();
var index = 1;
var max = 0;
const count_layer = (min, layer) => {
max = min + layer * 6 - 1;
layer++;
if (input > max) { // 입력 받은 값이 해당 layer의 최대값보다 크다면 다음 layer로 넘어간다.
count_layer(max + 1, layer);
} else {
console.log(layer); //아니라면 layer를 출력한다.
return;
}
};
if (Number(input) == 1) {
console.log(1);
} else {
count_layer(2, index);
}
'코딩 테스트 (BOJ)' 카테고리의 다른 글
[백준/BOJ] 11653번 소인수분해 (Javascript / Node js) (0) | 2023.08.30 |
---|---|
[백준/BOJ] 1978번 소수 찾기 (Javascript/Node js) (0) | 2023.08.29 |
[백준/BOJ] 9506번 약수들의 합 [javascript/Node js] (0) | 2023.08.28 |
[백준/BOJ] 2869번 달팽이는 올라가고 싶다 (Node js/javascript) (0) | 2023.08.27 |
[백준/BOJ] 1193번 분수찾기(Node js/javascript) (0) | 2023.08.26 |