https://school.programmers.co.kr/learn/courses/30/lessons/131128
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
접근방법
배열 X, Y에서 겹치는 값을 temp 배열에 담아 역순으로 정렬한 뒤 문자열끼리 더하는 방법을 사용하였다.
1차제출
function solution(X, Y) {
var answer = '';
var temp = []
for(yObj of Y){
if(X.includes(yObj)){
temp.push(yObj)
}
}
if(temp.length > 0){
temp = temp.sort((a,b) => b-a);
for(tempObj of temp){
answer += tempObj
}
}else{
answer = -1;
}
return Math.floor(answer).toString();
}
결과 : 36.8
분석 : 중복된 숫자에 대한 처리를 하지 않아서 오답이었다.
접근방법을 바꿔서 X의 각 숫자의 개수를 세고, Y에서 각 숫자마다 체크하여 X에 존재하는 숫자일 경우 common에 값을 추가하고 마지막에 역순으로 정렬 후 처리하는 방식으로 수정하였다.
2차 제출
function solution(X, Y) {
const mapX = new Map();
// X의 각 숫자 개수 세기
[...X].forEach((item) => {
mapX.set(item, (mapX.get(item) || 0) + 1);
});
const common = [];
[...Y].forEach((item) => {
if(mapX.get(item) > 0){
common.push(item);
mapX.set(item, mapX.get(item) -1);
}
})
common.sort((a, b) => b - a);
if (common.length === 0) return "-1"; // 공통 숫자가 없을 때
if (common[0] === "0") return "0"; // 모두 0일 때
return common.join("");
}
결과 : 100점
'프로그래머스' 카테고리의 다른 글
[프로그래머스] 최소직사각형 (1) | 2024.12.19 |
---|---|
[프로그래머스] 나머지가 1이 되는 수 찾기 (0) | 2024.12.18 |
[프로그래머스] 삼총사 (1) | 2024.12.16 |
[프로그래머스] 콜라 문제 (0) | 2024.12.15 |
[프로그래머스] 옹알이 (2) (0) | 2024.12.14 |