제가 문제를 풀다가 난관에 봉착했었습니다.
//1번
function solution(numbers) {
var answer = '';
let arr = [];
for(let i = 0; i<numbers.length; i++){
arr.push([numbers[i].toString(),numbers[i].toString()+numbers[i].toString()[0].repeat(4)])
}
arr.sort((a,b) => b[1].substr(0,4)-a[1].substr(0,4))
arr.map(x => answer+=x[0])
return answer[0] === "0"?"0":answer;
}
//2번
function solution(numbers) {
var answer = '';
let arr = [];
for(let i = 0; i<numbers.length; i++){
arr.push([numbers[i].toString(),numbers[i].toString().repeat(4)])
}
arr.sort((a,b) => b[1].substr(0,4)-a[1].substr(0,4))
arr.map(x => answer+=x[0])
return answer[0] === "0"?"0":answer;
}
1번과 2번은 차이점이 뭘까요??
1번은 [12,123] 이라면
[12,121111],[123,1231111]
2번은
[12,12121212],[123,123123123123]
각각 arr.sort((a,b) => b[1].substr(0,4)-a[1].substr(0,4))로 정렬합니다.
그런데 둘중에 하나만 성공합니다.
1번은 1~6, 12~14가 실패합니다.
2번은 전부 성공합니다.
둘의 차이가 무엇일까요?
만약 [12,121,12]가 있다고 생각해봅시다.
그렇다면 정답은 "1212121"이 되어야합니다.
하지만 1번은 "1212112"로 나옵니다.
왜일까요?
1번은 [12,121111],[121,1211111],[12,121111]로 전부 1211을 비교하기때문에 정렬이 되지않습니다.
2번은 [12,12121212],[121,121121121121],[12,12121212]로 정렬이 됩니다.
이 차이로 둘은 다른 답이 나오게 됩니다.
'코테 준비 > [JS] 프로그래머스' 카테고리의 다른 글
프로그래머스 Lv.2 : 소수 찾기 - 완전 탐색 (0) | 2024.08.05 |
---|---|
프로그래머스 Lv.2 : 피로도 - DFS (0) | 2024.08.05 |
프로그래머스 Lv.2 : 타겟 넘버 - DFS (0) | 2024.08.05 |
프로그래머스 0단계: 정답률 25% - 옹알이(1) (0) | 2024.08.05 |
프로그래머스 0단계: 정답률 44% - 평행 (0) | 2024.08.05 |