JavaScript 백준 온라인 알고리즘 공부
백준 2577 번 JavaScript 문제
const fs = require("fs");
const [...arr] = (process.platform === "linux"
? fs.readFileSync("/dev/stdin").toString()
: `150
266
427
`
)
.trim()
.split("\n");
let arrLines = arr.map((element) => Number(element));
let strNumbers = String(arrLines[0] * arrLines[1] * arrLines[2]);
let answer = "";
for (let i = 0; i <= 9; i++) {
let numArr = "";
for (let j = 0; j < strNumbers.length; j++) {
let strNum = Number(strNumbers[j]);
if (i === strNum) {
numArr += `${i}`;
}
}
answer += numArr.length + "\n";
}
console.log(answer);
주어진 입력숫자 A × B × C 의 결과값을 배열로 만들어 배열자리마다 각각 0부터 9까지 대조해 같은 숫자를 찾아낼 때 출력할 변수배열에 바로바로 넣는 로직이다.
이 문제 풀이의 해결 포인트는 연산할 때는 Number() 숫자타입
으로, 배열을 탐색할 때는 String()같은 문자타입으로 전환
하는 발상이 필요하다.
answer += numArr.length + "\n"
보면 알 수있듯이 출력할 숫자를 문자타입로 전환하면 +는 결국 배열을 담는 역활이 되는 것이다. 각각의 문자형 숫자배열의 길이를 구해서 출력
하는 걸로 제출을 했다. 온전한 숫자로 카운트해서 출력하는 방법 또한 있을지도 모른다.