728x90
[Javascript] (백준 4673) 셀프 넘버
💡 구글에 Javascript 풀이가 많이 없거나, 배운 점이 있으면 포스팅합니다.
내 풀이
main();
//* 로직함수
function solution() {
let dp = [-1];
for (let i = 0; i < 10000; i++) {
dp[d(i + 1)] = true;
}
let answer = [];
for (let i = 0; i < 10000; i++) {
if (dp[i + 1] === undefined) {
answer.push(i + 1);
}
}
return answer.join('\n');
}
function d(n) {
let strN = n + '';
let answer = n;
strN.split('').forEach((value, idx) => (answer += +value));
return Number(answer);
}
//--------------------------------------------------------
//* 메인함수 (백준용 인풋 등 처리)
function main() {
//* 인풋 (디폴트)
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
let input = require('fs').readFileSync(filePath);
if (input.length !== 0) {
input = input.toString().trim().split('\n');
//* 인풋 (커스텀)
const n = +input;
}
//* 함수 콜 (고정)
if (input.length === 0) {
console.log(solution());
} else {
let answer = solution(n);
answer = typeof answer === 'number' ? answer : answer.trim();
console.log(answer);
}
}
다른 사람 풀이
var check = Array(10001);
var result = "";
Array.prototype.sum = function () {
return this.reduce(function (p, c) {
return parseInt(p) + parseInt(c);
});
};
function d (N) {
N = String(N);
return parseInt(N) + parseInt(N.split("").sum());
}
for (var i = 1; i <= 10000; i++) {
check[d(i)] = true;
}
for (var i = 1; i <= 10000; i++) {
if (check[i] === undefined) {
result += String(i) + "\n";
}
}
console.log(result.slice(0, result.length - 1));
배운 점, 느낀 점
- “dp로 풀면되겠다.”해서 dp라고 이름지었는데, 그냥 for문 돌렸습니다.🤣
- 다른분 풀이 보니까 어레이에 프로토타입으로 각 자리수 sum 하는걸 만드셨네요 reduce로 sum하는걸 프로토타입으로 선언해두면 편하긴 하겠네요.
- 인풋처리를 신경안쓰고 싶은데 어떻게 안될까 싶네요. 하다하다 input처리용 main함수까지 만들기에 이르렀습니다. 허허 하루이틀 하고 그만둘거 아니니 계속 개선해야겠습니다.
'Coding Test > JavaScript' 카테고리의 다른 글
[Javascript] (프로그래머스 level 1) 문자열 내 마음대로 정렬하기 (0) | 2022.06.30 |
---|---|
[Javascript] (프로그래머스 level 1) 소수 찾기 (0) | 2022.06.30 |
[Javascript] (프로그래머스 level 1) 예산 (0) | 2022.06.30 |
[Javascript] (백준 9046) 복호화 (0) | 2022.06.30 |
[Javascript] (백준 2839) 설탕 배달 (0) | 2022.06.28 |
[Javascript] (백준 20291) 파일 정리 (0) | 2022.06.27 |
[Javascript] (백준 1259) 팰린드롬 수 (0) | 2022.06.27 |
[Javascript] (백준 10816) 숫자 카드2 (0) | 2022.06.26 |
댓글