프로그래머스 Lv.2 : 가장 큰 수 - 정렬

제가 문제를 풀다가 난관에 봉착했었습니다.

//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]로 정렬이 됩니다.

이 차이로 둘은 다른 답이 나오게 됩니다.