코딩테스트/Baekjoon

[백준 #14912] 숫자 빈도 수 (node.js)

동띵 2022. 8. 21. 13:25

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

 

14912번: 숫자 빈도수

자연수 n (1 ≤ n ≤ 100,000)과 한 자리 숫자 d(0~9)가 첫째 줄에 주어진다.

www.acmicpc.net

toString().split(' ').map(Number)로 입력받은 값을 공백 기준으로 나눈 후,
각 원소를 숫자로 만들어주었다.


그다음 input[0]는 변수 n, input [1]은 변수 d에 넣어주었다.

(input [1]을 문자열로 바꾼 이유는 객체 key 값으로 사용할 것이기 때문이다)

 

그리고 1부터 n까지 for 문을 돌면서  toString().split('')으로
해당 숫자를 한 글자씩 나누어 배열로 만들어 주었다

(해당 숫자의 자릿수를 모르기 때문)

그 후, map을 사용하여 그 배열의 원소에 접근해서 obj에 원소가 있다면 개수를 1 더해주고,
없다면 원소 개수를 1로 해주었다.

 

마지막으로 변수 d를 객체의 key로 접근하여
객체 안에 d라는 수가 몇 번 나왔는지 출력해주었다.

const input = require('fs').readFileSync('/dev/stdin').toString().split(' ').map(Number);
const n = input[0];
const d = String(input[1]);
const obj = {};

for (let i=1; i<=n; i++) {
  let num = i.toString().split('');
  num.map((e) => {
    obj[e] = (obj[e] || 0) + 1;
  })
}

console.log(obj[d]);

ex) 입력 값이 11 1인 경우

console.log(obj)

console.log(obj[d]) => 4