첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다.
첫째 줄에는 A × B × C의 결과에 0 이 몇 번 쓰였는지 출력한다. 마찬가지로 둘째 줄부터 열 번째 줄까지 A × B × C의 결과에 1부터 9까지의 숫자가 각각 몇 번 쓰였는지 차례로 한 줄에 하나씩 출력한다.
150
266
427
3
1
0
2
0
0
0
2
0
0
split와 filter 사용
세 수를 곱한 값을 split('')
로 나눠준다. (ex. '123'=>['1','2','3']
)
그리고 for문을 0에서 9까지 돌리면서 filter로 세 수를 곱한 값에 i와 같은 값들의 개수를 찾는다.
const arr=require('fs').readFileSync('/dev/stdin').toString().trim().split('\n').map(Number);
const result=String(arr[0]*arr[1]*arr[2]).split('');
for(let i=0;i<10;i++){
console.log(result.filter(x=>x===String(i)).length);
}
중첩된 for문을 사용
count 변수에 차례로 0~9와 같은 값들의 수를 누적시켜 출력한다.
const arr=require('fs').readFileSync('/dev/stdin').toString().trim().split('\n').map(Number);
const result=String(arr[0]*arr[1]*arr[2]);
for(let i=0;i<10;i++){
let count=0;
for(let j=0;j<result.length;j++){
result[j]===String(i)&&count++;
}
console.log(count);
}
문자열에 split의 특성을 응용
예를 들어, '123112'에서 '1'를 찾는다고 하자.
'123112'를 '1'로 split 해주면 다음과 같은 배열을 리턴받는데 이때 빨간색으로 체크된 부분에 '1'이 있다고 볼 수 있다.
그러므로 리턴된 배열의 길이(.length)에 -1를 해주면 찾는 값의 개수를 구할 수 있다.
const arr=require('fs').readFileSync('/dev/stdin').toString().trim().split('\n').map(Number);
const result=String(arr[0]*arr[1]*arr[2]);
for(let i=0;i<10;i++){
console.log(result.split(String(i)).length-1);
}