Development/Program Solving
[백준 단계별로 풀어보기] 6. 함수 (feat. NodeJS)
이쥬딩
2020. 12. 27. 22:56
728x90
4673번: 셀프 넘버
4673번: 셀프 넘버
셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때,
www.acmicpc.net
CASE 1
시간: 108.917ms
const selfNumber = [];
const main = () => {
for (let i=1; i<=10000; i++) {
selfNumber.push(i);
};
for(let i=1; i<=10000; i++) {
const result = i + i.toString().split("").reduce((pre, cur) => pre + Number(cur),0);
const sameIndex = selfNumber.indexOf(result);
if(~sameIndex) {
selfNumber.splice(sameIndex, 1);
}
};
for (const number of selfNumber) {
console.log(number);
};
};
main();
CASE 2
아무래도 splice로 삭제하면 배열 인덱스가 전체적으로 조정되어야하므로, 이 부분을 변경해서 속도 개선을 했다.
시간: 60.878ms
const selfNumber = [];
const main = () => {
for (let i=1; i<=10000; i++) {
selfNumber.push(i);
};
for(let i=1; i<=10000; i++) {
const result = i + i.toString().split("").reduce((pre, cur) => pre + Number(cur),0);
const sameIndex = selfNumber.indexOf(result);
if(sameIndex) {
selfNumber[sameIndex] = false;
}
};
for (const number of selfNumber) {
if(number) {console.log(number)};
};
};
main();
1065번: 한수
1065번: 한수
어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나
www.acmicpc.net
CASE 1
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
let number;
const onInput = (input) => number = Number(input);
const onClose = () => {
let firstNum = 0;
let answer = [];
for (let i = 1; i <= number; i++) {
if(i.toString().length >= 3){
const numbers = i.toString().split("");
for (let x = 0; x < numbers.length - 1; x++) {
const secondNum = Number(numbers[x]) - Number(numbers[x+1]);
if(x !== 0 && firstNum !== secondNum) {
break;
} else if(x !== 0 && firstNum === secondNum) {
answer.push(i);
}
firstNum = secondNum;
};
}else {
answer.push(i);
}
};
console.log(answer.length);
process.exit();
};
rl.on('line', onInput)
.on('close', onClose);
728x90