JavaScripts 문제

문제 63. 숫자 짝꿍(난이도 7)(객체 사용 {})

kagan-draca 2024. 8. 26. 21:07

 

비효율적으로 풀었지만, 일단 풀긴 풀었다...

 

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
}