비효율적으로 풀었지만, 일단 풀긴 풀었다...
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
}
'문제 풀기 > JavaScripts' 카테고리의 다른 글
문제 65번. 문자열 나누기 (0) | 2024.08.29 |
---|---|
문제 64. 체육복 (난이도 5) (0) | 2024.08.28 |
62문제. 옹알이(2)(난이도 10) (0) | 2024.08.23 |
문제 61. 로또의 최고 순위와 최저 순위(난이도 5) (0) | 2024.08.20 |
문제 60. 기사단원의 무기(난이도 5) (0) | 2024.08.20 |