알고리즘문제
프로그래머스 > 숫자짝궁
단점이없어지고싶은개발자
2022. 10. 18. 22:08
반응형
1. 문제를 접했을 때, 해당 문자열을 찾고 result에 더해주고, 나머지 배열로 바꾼 문자열에서 문자열을 빼주는 형식으로 진행했다.
2. 하지만, 11 ~ 15번까지 시간초과가 나왔다.
3. 그래서 질문하기에서 팁을 얻었다. 0 ~ 9까지의 숫자를 생각해보라.
4. 아래에서는 문자열을 filter로 0 ~ 9까지 돌면서 filter를 해서 반복해서 숫자를 넣어줬다.
5. repeat이란 메소드를 사용해서 만약 해당 숫자가 없으면 0이되니까 반복되지 않고 넘어가게 된다.
function solution(X, Y) {
const first = X.split('');
const second = Y.split('');
let result = '';
for (let i = 0; i < first.length; i++) {
if (second.includes(first[i])) {
second.splice(second.indexOf(first[i]), 1);
result += first[i];
}
}
if (!result) return '-1'
return Number(result) === 0 ? '0' : result.split('').sort((a, b) => b - a).join('');
}
function solution(X, Y) {
let first = [...X];
let second = [...Y];
let result = '';
for (let i = 0; i < 10; i++) {
const tempX = first.filter((item) => +item === i).length;
const tempY = second.filter((item) => +item === i).length;
result += i.toString().repeat(Math.min(tempX, tempY));
}
if (!result) return '-1'
return Number(result) === 0 ? '0' : result.split('').sort((a, b) => b - a).join('');
}
반응형