신입 개발자에서 시니어 개발자가 되기까지

두 수의 빈도수가 같은 지 판단하기 본문

javascript/[Udemy] algorithm & data structure

두 수의 빈도수가 같은 지 판단하기

Jin.K 2022. 9. 12. 23:41

문제

Write a function called sameFrequency. Given two positive integers, find out if the two numbers have the same frequency of digits.

Your solution MUST have the following complexities: ( 양의 정수를 인자로 받아서 수의 빈도가 같은 출력하라, 시간복잡도는 O(n)이어야 한다.)

ex ) 12134, 12341은 true / 1234, 2234는 false

 

코드

function sameFrequency(num1, num2) {

  const obj = {};

  for (let number of num1.toString()) {

    obj[number] = (obj[number] || 0) + 1;

  }

  for (let number of num2.toString()) {

    if (!obj[number]) {

      return false;

    }

    obj[number] -= 1;

  }

  return true;

}

const result = sameFrequency(3589578, 5879385);

console.log(result);

 

/* refactoring

const strNum1 = num1.toString();

const strNum2 = num2.toString();

if(strNum1.length !== strNum2.length) return false;

해당 코드를 추가해서 length가 다르면 바로 false 반환하도록 한다.

*/