| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- 1541 node.js
- 21313 nodejs
- 자바스크립트 딥다이브
- 자바스크립트 함수
- 개발자
- 백준21313
- 코딩
- const
- 백준1789
- flex box
- 1789 node.js
- 모던자바스크립트 딥다이브
- 노마드스터디
- 14655 nodejs
- 노마드북클럽
- 2217 node.js
- 개인프로젝트
- 백준25176
- 모던자바스크립트
- 11399 node.js
- 노개북
- 자바스크립트 일급객체
- 백준1026
- CSS flex
- 1026 node.js
- Javascript
- IT5분잡학사전
- 모던자바스크립트DeepDive
- 1931 node.js
- 11047 node.js
- Today
- Total
캐또's coding
2292 - 벌집 - node.js 본문
https://www.acmicpc.net/problem/2292
2292번: 벌집
위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌
www.acmicpc.net
문제를 복잡하게 생각하면, 어떤 목적지까지 가는 경로를 생각하고 그 수를 구해내는 방법을 떠올릴 것이겠지만,
결과적으로는 몇 개의 방을 지나서 가는 것인지/ 바꿔 말하면 몇 번만에 갈 수 있는지를, 더더더 쉽게 생각해보자면 아래와 같다.

칸을 이동하려면 무조건 1칸씩이기 때문에 위의 그림처럼 한 둘레씩 증가하면서 특정 숫자를 향해 갈 수밖에 없는 구조다.
그렇다면? 숫자의 범위 1 / 2~7 / 8~19 / .... 이러한 규칙, 등차수열임을 알 수 있다.
입력으로 들어온 숫자가 범위 안에 들어왔다면? 예를 들어 10이라면? 1 / 2~7 / 8~19. 즉 3번째다.
계산은 큰 값만 봐도 된다. 가장 큰 값 안의 범위로 들어왔다? => 도착했다는 뜻이 되기 때문이다.
그러면 결국 등차수열에 따라 증가하는 범위 안으로 언제 들어왔냐 => 몇 번째 계산일 때 들어왔냐?가 된다.
const input = Number(require("fs").readFileSync("/dev/stdin").toString().trim());
let count = 1;
let maxNum = 1;
while (input > maxNum) {
maxNum += count++ * 6;
}
console.log(count);
while 문을 통해 input이 maxNum의 범위 안에 들어오기 전까지 계산을 반복해준다.
maxNum은 6의 배수씩 늘어나야 한다.( count++를 해주면 1, 2, 3.... 거기에 6을 곱한 값은 6의 배수)
결국 count는 계산한 횟수도 되기 때문에 최종적으로 count를 출력하면 문제 해결
'기초 공부 > 백준 문제 풀이' 카테고리의 다른 글
| 2869 - 달팽이는 올라가고 싶다 - node.js (0) | 2022.08.24 |
|---|---|
| 1193 - 분수찾기 - node.js (0) | 2022.08.24 |
| 1316 - 손익분기점 - node.js (0) | 2022.08.23 |
| 1316 - 그룹 단어 체커 - node.js (0) | 2022.08.23 |
| 2941 - 크로아티아 알파벳 - node.js (0) | 2022.08.23 |