프로그래머스 Lv. 1 문자열 내 마음대로 정렬하기 - sort 메서드, 버블정렬

FE 개발자 신상오·2022년 6월 12일
0

프로그래머스

목록 보기
15/20
post-thumbnail

문제


풀이

function solution(strings, n) {
    
    strings.sort((a, b) => {
    if (a[n] < b[n]) return -1;
    if (a[n] > b[n]) return 1;
    if (a[n] === b[n]) return a < b ? -1 : 1;
   
    return 0;
  });
    return strings;
}

해설

a[n] > b[n] 경우 a[n]의 인덱스 +1
a[n] < b[n] 경우 a[n]의 인덱스 -1
a[n] === b[n] 경우 a 와 b를 비교해서 정렬


다른 풀이

sort 메소드 사용하지않고
버블정렬을 이용해서 풀어봤습니다

function solution(strings, n) {
    
    let tmp = '';
    
    for (let i = 0; i < strings.length - 1; i++){
        for (let j = 0; j < strings.length - 1 - i; j++){
            if (strings[j][n] > strings[j + 1][n]){
            tmp = strings[j];
            strings[j] = strings[j + 1];
            strings[j + 1] = tmp;
            } else if (strings[j][n] === strings[j + 1][n]){
                if (strings[j] > strings[j + 1]){
                    tmp = strings[j];
                    strings[j] = strings[j + 1];
                    strings[j + 1] = tmp; 
                }
            }
        }
    }
    return strings;
}

해설

버블정렬 예시로 [7, 5, 3, 9, 4] 배열을 오름차순으로 정렬하는 과정을 작성해봤습니다
jj + 1 인덱스를 비교해가면서 정렬을 합니다
정렬이 한 번 이뤄질 때마다 가장 큰 숫자가 마지막 인덱스로 들어갑니다


Array.prototype.sort()

  • 아무런 조건이 없으면 사전순으로 오름차순 정렬합니다
arr.sort((a, b) => a - b) // 내림차순
arr.sort((a, b) => b - a) // 오름차순

⚠️ arr.sort(); 할경우 사전순으로 오름차순 정렬

[7, 14, 5, 22, 123].sort();
// expected [123, 14, 22, 5, 7] 

숫자의 경우에는 .sort((a, b) => b - a) 로 메서드 사용해야함
// expected [5, 7, 14, 22, 123] 
profile
주간 회고용 블로그입니다 (개발일지와 정보글은 티스토리에 작성합니다.)

0개의 댓글