min
프로그래머스 숫자 짝꿍 자바스크립트 본문
<문제>
https://school.programmers.co.kr/learn/courses/30/lessons/131128
<나의 풀이>
//X의 각원소를 높은 순 부터 낮은 순으로 배열을 만든다.
//Y의 각원소를 높은 순 부터 낮은 순으로 배열을 만든다.
//X와 Y중 길이가 작은 리스트 만큼 반복문을 돌면서 다음 과정을 수행한다.
//만약에 작은 길이의 배열의 원소가 긴 길이의 배열의 원소에 있다면 다음 과정을 수행한다.
//answer에 그 원소를 담는다.
//긴 길이의 배열의 원소를 지운다.
//answer를 반환한다.
function solution(X, Y) {
let answer = '';
let burket = {};
X = X.split("").sort((a , b) => b - a)
Y = Y.split("").sort((a , b) => b - a)
let small = X.length > Y.length ? Y : X
let large = X.length > Y.length ? X : Y
for(let i = 0; i < large.length; i++) {
if(burket[large[i]]) {
burket[large[i]] += 1
} else {
burket[large[i]] = 1
}
}
for(let j = 0; j < small.length; j++) {
if(burket[small[j]]) {
answer += small[j]
burket[small[j]] -= 1
}
}
if(answer === "") return "-1"
if(answer.replaceAll("0" , "") === "") return "0"
console.log(burket)
return answer;
}
<다른 사람의 풀이>
function solution(X, Y) {
let result = '';
const numObj = {};
for (const char of X) {
numObj[char] = (numObj[char] || 0) + 1;
}
for (const char of Y) {
if (!numObj[char]) continue;
result += char;
numObj[char]--;
}
if (result === '') return '-1';
if (+result === 0) return '0';
return [...result]
.map((num) => +num)
.sort((a, b) => b - a)
.join('');
}
<참고 자료>
map
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Map
'알고리즘' 카테고리의 다른 글
프로그래머스 둘만의 암호 자바스크립트 (0) | 2023.08.26 |
---|---|
프로그래머스 문자열 나누기 자바스크립트 (0) | 2023.08.25 |
프로그래머스 옹알이(2) 자바스크립트 (0) | 2023.08.23 |
프로그래머스 다트 게임 자바스크립트 (0) | 2023.08.22 |
프로그래머스 덧칠하기 자바스크립트 (0) | 2023.08.21 |