문제 63. 숫자 짝꿍(객체 사용 {})
비효율적으로 풀었지만, 일단 풀긴 풀었다...
let num1 = {}, num2 = {}
for(let i of X)
{
if(num1[i]) num1[i]++;
else num1[i] = 1;
}
for(let i of Y)
{
if(num2[i]) num2[i]++;
else num2[i] = 1;
}
X, Y 문자열에 단어를
num1, num2 객체로 만들어
저장한다.
let rsult = ''
결과를 저장할 문자열 변수
result를 만든 후,
for(let i = 9; i >= 0; i--)
{
if(num1[i] && num2[i] && num1[i] >= num2[i]) result += i.toString().repeat(num2[i])
else if(num1[i] && num2[i] && num1[i] < num2[i]) result += i.toString().repeat(num1[i])
}
9 ~ 0까지 반복문을 돌면서
두 객체의 key에 따른 value가 존재하면
객체에서 value가 작은 value로
result += i.toString().repeat(num[i])
로 저장한다.
마지막으로
return result.length === 0 ? "-1" : Number(result) === 0 ? "0" : result
length 길이가 0이면 -1로 결과를 바꾸고,
0만 반복하는 숫자이면 0으로 결과를 바꿔준다
ex) 00 -> 0
제출한 코드 :
function solution(X, Y)
{
let num1 = {}, num2 = {}
for(let i of X)
{
if(num1[i]) num1[i]++;
else num1[i] = 1;
}
for(let i of Y)
{
if(num2[i]) num2[i]++;
else num2[i] = 1;
}
console.log(num1, num2)
let result = ''
for(let i = 9; i >= 0; i--)
{
if(num1[i] && num2[i] && num1[i] >= num2[i]) result += i.toString().repeat(num2[i])
else if(num1[i] && num2[i] && num1[i] < num2[i]) result += i.toString().repeat(num1[i])
}
return result.length === 0 ? "-1" : Number(result) === 0 ? "0" : result
}