안녕하세요

프로그래머스 JS [숫자 짝꿍] 본문

프로그래머스/Lv.1

프로그래머스 JS [숫자 짝꿍]

sakuraop 2023. 1. 29. 15:44

숫자 짝꿍 문제보기

문제 요약

X, Y에서 겹치는 숫자 찾기

찾은 숫자들로 가장 큰 정수 만들기

문제 조건

1. X, Y에서 공통으로 나타나는 정수 찾기 (0~9 사이)
2. 가장 큰 정수를 만들 수 있는 경우가 두 수의 짝꿍
3. 짝꿍이 없으면 짝꿍은 -1
4. 0으로만 구성되어 있다면 짝꿍은 0

문제 풀이

   1. 0~9 카운트할 Object 생성

function solution(X, Y) {
  let 공통정수 = "";
  const xCount = {};
  const yCount = {};

  for (let i = 0; i < 10; i++) {
    [xCount[i], yCount[i]] = [0, 0];
  }
    {
      '0': 0,
      '1': 0,
      '2': 0,
      '3': 0,
      '4': 0,
      '5': 0,
      '6': 0,
      '7': 0,
      '8': 0,
      '9': 0
    }

 

   2. 숫자 개수 카운트
  for (let i = 0; i < X.length; i++) {
    xCount[X[i]] += 1;
  }
  for (let i = 0; i < Y.length; i++) {
    yCount[Y[i]] += 1;
  }
    {
      '0': 2,
      '1': 0,
      '2': 0,
      '3': 0,
      '4': 0,
      '5': 0,
      '6': 0,
      '7': 0,
      '8': 0,
      '9': 2
    }
 

   3. 같은 정수 추가하기
 
xCount와 yCount 중에서 작은 수 만큼 i 를 반복시키면 된다.
 
ex)
xCount { "1" : 2 } 
yCount { "1" : 1 }
 
둘 중에 작은 수 = 1
 
repeat로 i("1")를 둘 중에 작은 수(1) 만큼 반복
  for (let i = 0; i < 10; i++) {
    if (xCount[i] > 0 && yCount[i] > 0) {
      공통정수 += i.toString().repeat(Math.min(xCount[i], yCount[i]));
    }
  }

 

solution("0909", "9090");
 
  // 0099
 
   4. 조건에 따라 결과 반환하기
  // 공통되는 정수 없으면 -1 반환
  if (공통정수 === "") return "-1";
  // 0뿐이면 0 반환
  if (공통정수 * 1 === 0) return "0";

  // 4. 만들 수 있는 가장 큰 정수 반환 (내림차순 정렬하여 만들 수 있다.)
  return 공통정수
    .split("")
    .sort((a, b) => b - a)
    .join("");
}​

function solution(X, Y) {
  let 공통정수 = "";
  const xCount = {};
  const yCount = {};

  for (let i = 0; i < 10; i++) [xCount[i], yCount[i]] = [0, 0];
  for (let i = 0; i < X.length; i++) xCount[X[i]] += 1;
  for (let i = 0; i < Y.length; i++) yCount[Y[i]] += 1;

  for (let i = 0; i < 10; i++) {
    if (xCount[i] > 0 && yCount[i] > 0) {
      공통정수 += i.toString().repeat(Math.min(xCount[i], yCount[i]));
    }
  }

  if (공통정수 === "") return "-1";
  if (공통정수 * 1 === 0) return "0";
  return 공통정수.split("").sort((a, b) => b - a).join("");
}