코딩테스트/Baekjoon

[백준 #2577] 숫자의 개수 (node.js)

동띵 2022. 5. 10. 14:30

https://www.acmicpc.net/problem/2577

 

2577번: 숫자의 개수

첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다.

www.acmicpc.net

 

입력받은 값을 \n 기준으로 나누고 map과 Number를 사용하여 정수로 변환해주었다.

입력 값이 3개인 것이 나와있으므로 인덱스를 통해 배열에 접근하여 해당 값을 다 곱해주었다.

 

그리고 곱한 값을 한 글자씩 나누어 배열에 넣고 map과 Number를 사용하여 정수로 변환해주었다.

마지막으로 0부터 9까지 몇 번 등장하는지 세기 위해 for문을 사용하였고,

변수 i가 0부터 9까지 1씩 커져가며 filter 메서드를 통해 

배열 안에 i 값과 같은 것들을 필터링하여 개수를 세주었다.

 

***

filter는 안에 콜백 함수를 실행하여

true를 반환하는 요소들을 기준으로 새로운 배열을 반환한다.

그래서 length를 사용하여 해당 숫자가 몇 번 등장한지 알 수 있다.

***

 

const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n').map(Number);
const abc = input[0]*input[1]*input[2];
const abcArr = abc.toString().split("").map(Number);
let result = '';

for (let i=0; i<=9; i++) {
    let cnt = abcArr.filter(element => i === element).length;
    result += cnt+'\n';
}

console.log(result);