728x90
반응형
링크
https://www.acmicpc.net/problem/2292
문제
위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오. 예를 들면, 13까지는 3개, 58까지는 5개를 지난다.
입력
첫째 줄에 N(1 ≤ N ≤ 1,000,000,000)이 주어진다.
출력
입력으로 주어진 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나는지 출력한다.
예제
입력
13
출력
3
답안
const fs = require("fs");
const cnt = fs.readFileSync("input.txt").toString().trim();
const solution = () => {
const numCnt = parseInt(cnt);
let count = 1, limit = 1;
while (limit < numCnt) {
limit += 6 * count;
count++;
}
console.log(count);
};
solution();
만일
만일
while (limit <= numCnt) {
}
로 수정하게 된다면
while (limit <= N)을 사용하면 N이 limit에 도달했을 때
이미 원하는 범위에 도달했음에도 불구하고
불필요하게 추가 범위 증가가 일어나게 됩니다.
이는 문제의 요구사항을 정확히 충족시키지 못하고,
불필요한 계산을 하게 만들 수 있습니다.
즉 주어진 숫자가 7일때,
limit이 7이 나온다면 그때의 count를 가져오면 답변인데,
<=으로 인해서 한번 더 루프를 돌게 됨으로 count + 1이 답변으로 나올 수 있게 된다.
728x90
반응형
'코딩 테스트' 카테고리의 다른 글
[백준] 2869번 - 달팽이는 올라가고 싶다 (node.js) (0) | 2024.04.26 |
---|---|
[백준] 1193번 - 분수찾기 (node.js) (1) | 2024.04.25 |
[백준] 2903번 - 중앙 이동 알고리즘 (node.js) (0) | 2024.04.23 |
[백준] 2563번 - 색종이 (node.js) (0) | 2024.04.23 |
[백준] 1316번 - 그룹 단어 체커 (node.js) (0) | 2024.04.18 |
댓글