Jieunny์˜ ๋ธ”๋กœ๊ทธ

[JS] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์ˆซ์ž ์ง๊ฟ ๋ณธ๋ฌธ

Study/Coding Test

[JS] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์ˆซ์ž ์ง๊ฟ

Jieunny 2023. 1. 30. 17:51

๐Ÿ“Œ  ๋ฌธ์ œ

๋‘ ์ •์ˆ˜ X, Y์˜ ์ž„์˜์˜ ์ž๋ฆฌ์—์„œ ๊ณตํ†ต์œผ๋กœ ๋‚˜ํƒ€๋‚˜๋Š” ์ •์ˆ˜ k(0 โ‰ค k โ‰ค 9)๋“ค์„ ์ด์šฉํ•˜์—ฌ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ์ •์ˆ˜๋ฅผ ๋‘ ์ˆ˜์˜ ์ง๊ฟ์ด๋ผ ํ•ฉ๋‹ˆ๋‹ค(๋‹จ, ๊ณตํ†ต์œผ๋กœ ๋‚˜ํƒ€๋‚˜๋Š” ์ •์ˆ˜ ์ค‘ ์„œ๋กœ ์ง์ง€์„ ์ˆ˜ ์žˆ๋Š” ์ˆซ์ž๋งŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค). X, Y์˜ ์ง๊ฟ์ด ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด, ์ง๊ฟ์€ -1์ž…๋‹ˆ๋‹ค. X, Y์˜ ์ง๊ฟ์ด 0์œผ๋กœ๋งŒ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค๋ฉด, ์ง๊ฟ์€ 0์ž…๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, X = 3403์ด๊ณ  Y = 13203์ด๋ผ๋ฉด, X์™€ Y์˜ ์ง๊ฟ์€ X์™€ Y์—์„œ ๊ณตํ†ต์œผ๋กœ ๋‚˜ํƒ€๋‚˜๋Š” 3, 0, 3์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ์ •์ˆ˜์ธ 330์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์˜ˆ์‹œ๋กœ X = 5525์ด๊ณ  Y = 1255์ด๋ฉด X์™€ Y์˜ ์ง๊ฟ์€ X์™€ Y์—์„œ ๊ณตํ†ต์œผ๋กœ ๋‚˜ํƒ€๋‚˜๋Š” 2, 5, 5๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ์ •์ˆ˜์ธ 552์ž…๋‹ˆ๋‹ค(X์—๋Š” 5๊ฐ€ 3๊ฐœ, Y์—๋Š” 5๊ฐ€ 2๊ฐœ ๋‚˜ํƒ€๋‚˜๋ฏ€๋กœ ๋‚จ๋Š” 5 ํ•œ ๊ฐœ๋Š” ์ง ์ง€์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.)
๋‘ ์ •์ˆ˜ X, Y๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, X, Y์˜ ์ง๊ฟ์„ returnํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

์ œํ•œ์‚ฌํ•ญ

  • 3 โ‰ค X, Y์˜ ๊ธธ์ด(์ž๋ฆฟ์ˆ˜) โ‰ค 3,000,000์ž…๋‹ˆ๋‹ค.
  • X, Y๋Š” 0์œผ๋กœ ์‹œ์ž‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • X, Y์˜ ์ง๊ฟ์€ ์ƒ๋‹นํžˆ ํฐ ์ •์ˆ˜์ผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๋ฌธ์ž์—ด๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

 

๐Ÿ’ก  ์•„์ด๋””์–ด

X, Y ๊ฐ์ž ์–ด๋–ค ์ˆซ์ž๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€ ๋ฐฐ์—ด์— ๊ฐ๊ฐ ์ €์žฅํ•œ๋‹ค.

๋‘ ๋ฐฐ์—ด ๋ชจ๋‘ 0 ๋ณด๋‹ค ํฐ ์ธ๋ฑ์Šค์ผ ๊ฒฝ์šฐ ๋™์‹œ์— ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฏ€๋กœ ๋นˆ ๋ฐฐ์—ด์— ๋„ฃ์–ด์ฃผ๋Š”๋ฐ, ๋” ์ž‘์€ ๊ฐœ์ˆ˜๋ฅผ ๊ฐ€์ง„ ๋ฐฐ์—ด์„ ๊ธฐ์ค€์œผ๋กœ ํ•ด์•ผํ•˜๋ฏ€๋กœ ๋‘ ๊ฐœ์ˆ˜ ์ค‘ ์ž‘์€ ๊ฐฏ์ˆ˜๋ฅผ min ์— ๋‹ด์•„ min๋งŒํผ repeat ์‹œ์ผœ์ค€๋‹ค.

๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ sort๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค.

๋‹ต์ด '0', '00', '000'... ์ด ๋‚˜์˜ค๋Š” ๊ฒฝ์šฐ๋„ ์ƒ๊ฐํ•ด์•ผ ํ•œ๋‹ค.

 

โœ๏ธ  ํ’€์ด

function solution(X, Y) {
  var answer = '';
  let same = [];

  let numberA = new Array(11);
  numberA.fill(0);
  let numberB = new Array(11);
  numberB.fill(0);
  
  // ๋ฌด์Šจ ์ˆ˜๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€ ๊ฐ๊ฐ ๋‹ด์•„์ฃผ๊ธฐ.
  for(let i=0; i<X.length; i++){
    numberA[Number(X[i])] ++;
  }

  for(let i=0; i<Y.length; i++){
    numberB[Number(Y[i])] ++;
  }

  // ๊ฐ™์€ ์ˆซ์ž๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด ์ƒˆ ๋ฐฐ์—ด์— ๋„ฃ์–ด์ค€๋‹ค.
  for(let i=0; i<numberA.length; i++){
    let min = numberA[i];
    if(numberA[i] > 0 && numberB[i] > 0){
      if(numberA[i] > numberB[i]){
        min = numberB[i];
      }
      same.push(String(i).repeat(min));
    }
  }

  // ๊ฐ™์€ ์ˆซ์ž๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ
  if(same.length === 0){
    return '-1';
  }
 
  same = same.join('');

  same = [...same];
  
  // ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ฆฌ
  same = same.sort((a, b) => {
    return b - a;
  });

  same = same.join('');
    
  // '0', '00', '000'...์ธ ๊ฒฝ์šฐ ์ƒ๊ฐ  
  if(Number(same) === 0){
    same = '0'
  }

  return same;
}