문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/131128
문제 설명
두 정수 X, Y의 임의의 자리에서 공통으로 나타나는 정수 k(0 <= k <= 9)들을 이용하여 만들 수 있는 가장 큰 정수를 두 수의 짝꿍이라 합니다.
X, Y의 짝꿍이 존재하지 않으면, 짝꿍은 -1입니다. X, Y의 짝꿍이 0으로만 구성되어 있다면, 짝꿍은 0입니다.
두 정수 X, Y가 주어졌을 때, X, Y의 짝꿍을 리턴하는 함수를 완성하세요.
제한 사항
- 3 <= X, Y의 길이(자릿수) <= 3,000,000 입니다.
- X, Y는 0으로 시작하지 않습니다.
- X, Y의 짝꿍은 상당히 큰 정수일 수 있으므로, 문자열로 반환합니다.
풀이
- X, Y의 길이가 300만이기 때문에, X의 숫자가 Y에 포함되어 있는지 확인하는 방법은 시간이 너무 오래 소요된다. 따라서, k의 범위가 0부터 9까지 이므로 filter함수를 이용하여 0부터 9까지의 개수(count)를 구해 문자열에 추가시켰다.
- 가장 큰 정수를 리턴해야하기 때문에 9부터 0까지 반복문을 돌게 되면 내림차순 정렬을 따로 할 필요가 없어진다.
✅ Code - 성공
function solution(X, Y) {
let answer = '';
function counting_num(num) {
const num_x = X.split('').filter(val => val === num).length;
const num_y = Y.split('').filter(val => val === num).length;
return Math.min(num_x, num_y);
}
for (let i = 9; i >= 0; i--) {
const min_cnt = counting_num(String(i));
if (min_cnt > 0) answer += String(i).repeat(min_cnt);
}
if (answer[0] === '0') return '0'
return answer.length >= 1 ? answer : '-1'
}
'알고리즘 문제 > 프로그래머스_Lv1 도장깨기' 카테고리의 다른 글
[프로그래머스] 삼총사 (Javascript) (0) | 2025.01.08 |
---|---|
[프로그래머스] 성격 유형 검사하기 (Javascript) (0) | 2025.01.04 |
[프로그래머스] 신고 결과 받기 (Javascript) (1) | 2025.01.03 |
[프로그래머스] 나머지가 1이 되는 수 찾기 (Javascript) (0) | 2025.01.02 |
[프로그래머스] 최소직사각형 (Javascript) (0) | 2025.01.01 |