STUDY/Algorithm

[프로그래머스_자바스크립트] Lv.1 숫자 짝꿍 / 해시 알고리즘

ez1n 2023. 1. 23. 19:42

 

[Javascript_ 숫자 짝꿍]

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 


 

<STUDY>

 

📢 문제 📢

 

두 정수 X, Y의 임의의 자리에서 공통으로 나타나는 정수 k(0 ≤ k ≤ 9)들을 이용하여 만들 수 있는 가장 큰 정수를 두 수의 짝꿍이라 합니다(단, 공통으로 나타나는 정수 중 서로 짝지을 수 있는 숫자만 사용합니다). 

X, Y의 짝꿍이 존재하지 않으면, 짝꿍은 -1입니다.

X, Y의 짝꿍이 0으로만 구성되어 있다면, 짝꿍은 0입니다.

 

두 정수 X, Y가 주어졌을 때, X, Y의 짝꿍을 return하는 solution 함수를 완성해주세요.

 

제한사항

  • 3 ≤ X, Y의 길이(자릿수) ≤ 3,000,000입니다.
  • X, Y는 0으로 시작하지 않습니다.
  • X, Y의 짝꿍은 상당히 큰 정수일 수 있으므로, 문자열로 반환합니다.

 


 

<전체 코드>

 

function solution(X, Y) {
  let hashX = new Array(10).fill(0);
  let hashY = new Array(10).fill(0);

  X.split("").forEach(i => hashX[i]++);
  Y.split("").forEach(i => hashY[i]++);

  const answer = hashX.reduce((result, item, index) => {
    if (item > 0 && hashY[index] > 0) {
      const str = index.toString().repeat(Math.min(item, hashY[index]));
      return result.concat(str);
    }
    return result;
  }, []);
  const result = answer.reverse().join("");

  if (result === '') return "-1";
  if (result[0] === "0") return "0";
  return result;
}

 

 


 

 

해시 테이블을 사용하여 풀면 되는 문제였다.

아직 문제를 보고 자료구조에 대해서 바로 떠오르지 않아서 조금 답답하지만(?

그래도 열심히 해야겠다.

 

화이팅!

 


 

🔆프로그래머스 Lv.1 숫자 짝꿍🔆

 

👉ez1n github 구경하기👈

 

 

ez1n - Overview

Front-End Developer. ez1n has 16 repositories available. Follow their code on GitHub.

github.com