BOJ_16676 근우의 다이어리 꾸미기
- TOC {:toc}
이 글은 백준 온라인 저지의 16676번 문제를 자바스크립트(JavaScript)으로 풀이한 것을 모아놓은 글입니다.
일종의 연습 기록이며 제가 정답을 받은 코드와 참고할만한 다른 코드를 같이 기록합니다. 필요한 경우 코드에 대한 해설을 기록합니다만 코드는 통과했어도 해설은 틀릴 수 있기 때문에 가볍게 참고해주시길 부탁드립니다. 피드백은 편하신 방법으로 자유롭게 주시면 감사하겠습니다.
2023.02.27
메모리 | 시간 | 코드 길이 |
---|---|---|
9332 KB | 160 ms | 362 B |
단계 | 시작 시각 | 끝난 시각 | 걸린 시간 |
---|---|---|---|
문제 이해 | 17:39:28 | 17:40:42 | |
풀이 생각 | 17:40:44 | 17:41:14 | |
코딩 | 17:41:15 | 17:43:55 | |
디버깅 | 17:48:01 | 18:07:24 |
const fs = require("fs");
const input = fs.readFileSync('/dev/stdin').toString().trim();
const N = parseInt(input);
const thres = parseInt([...input].map(() => "1").join(""));
function main() {
if (N === 0) {
return 1;
}
if (N < thres) {
return input.length - 1;
}
return input.length;
}
console.log(main());
아이디어 & 풀이
0부터 N까지의 수에서 스티커 팩이 가장 많이 필요한 경우는 연봉이 모두 같은 수로 이루어져있는 경우이다.
- 예를 들어 N이 300000이면 여섯자리가 모두 같은 숫자로 이루어져있는 111111, 222222가 범위에 포함되므로 필요한 스티커 팩의 개수는 6개이다.
- 다만 N이 100000일 경우에는 100000 미만의 수 중 여섯자리 모두 같은 숫자를 갖는 값이 없으므로 필요한 스티커 팩의 개수는 5개이다.
- 즉, N이 모든 자리가 같은 수로 이루어진 최소 수인 111111 보다 작은 수면 자리수보다 한 개 적은 5개의 스티커 팩이 필요하다.
정리하면
- N의 자리수 만큼 1이 있는 수보다 N의 값이 작으면 자리수 보다 1 작은 값을
- N의 값이 그 이상이면 자리수를 출력하면 된다.
디버그
- 목표 연봉이 0인 경우에도 스티커 팩이 한 개 필요한데 케이스를 따로 처리해주지 않으면
salary
는 0,thres
는 1이라 결과값으로 0이 출력된다.
-
ps-js