문제

답안
function solution(X, Y) {
var answer = '';
let cnt1 = 0;
let cnt2 = 0;
// X,Y에 들어있는 숫자의 갯수를 cnt1, cnt2에 담아 적은 값을 answer에 넣어준다.
for(let i = 0; i <= 9; i++){
cnt1 = X.split('').filter(a => a==i).length;
cnt2 = Y.split('').filter(a => a==i).length;
answer += i.toString().repeat(Math.min(cnt1,cnt2));
}
// answer가 공백이라면 -1 출력, 0을 다 제거했을때 공백이라면 0 출력
// 둘다 아니라면 배열을 내림차순으로 정렬해준다.
if(answer == ""){
return "-1";
} else if(answer.replaceAll(0, "") === ""){
return "0";
} else {
return answer.split('').reverse().join('');
}
}
배우고 싶은 답안
function solution(X, Y) {
let result = '';
const numObj = {};
// X의 char가 numObj에 있을경우 없으면 0에서 +1, 있으면 해당값에 +1
for (const char of X) {
numObj[char] = (numObj[char] || 0) + 1;
}
// Y의 char가 numObj에 없을경우 건너뛰고, 있을경우 result에 char값을 넣어주고, numObj 해당값에서 -1
for (const char of Y) {
if (!numObj[char]) continue;
result += char;
numObj[char]--;
}
// result 공백이면 -1 출력
// result가 0이면 0 출력
// return을 숫자열로 변환하고 내림차순으로 변환한다.
if (result === '') return '-1';
if (+result === 0) return '0';
return [...result]
.map((num) => +num)
.sort((a, b) => b - a)
.join('');
}
후기
numObj[char] = (numObj[char] || 0) +1;
해당 key의 value 유무를 위와 같은 방법으로 확인하는 방법을 연습하자
728x90
'자바스크립트 코딩테스트' 카테고리의 다른 글
| 프로그래머스 Level 1 - 옹알이(2) (Javascript) (0) | 2023.11.28 |
|---|---|
| 프로그래머스 Level 1 - 로또의 최고 순위와 최저 순위 (Javascript) (0) | 2023.11.27 |
| 프로그래머스 Level 1 - 완주하지 못한 선수 (Javascript) (1) | 2023.11.25 |
| 프로그래머스 Level 1 - 문자열 나누기 (Javascript) (2) | 2023.11.24 |
| 프로그래머스 Level 1 - 햄버거 만들기 (Javascript) (3) | 2023.11.23 |