프로그래머스 1단계 - 문자열 내 마음대로 정렬하기

원동휘·2022년 10월 2일
0

프로그래머스

목록 보기
36/46

< 문제 >

< 풀이 >

  • 인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다.를 염두해둔다.


    배열의 n번째 를 서로 비교해준다.
    a[n] > b[n] return 1
    a[n] < b[n]) return -1
    을 해주면 sort정렬에서는 a와,b가 index n번째 기준으로 오름차순정렬된다 (반대로 하면 내림차순도 가능)
    그렇게 서로 다른경우 return 1 or -1로 연산이 끝나는데
    a[n]값과 b[n]값이 서로 같은경우(===)는 따로 정의하지않았기때문에 if문을 그대로 지나친다.
    그렇게 맨위에 있는 염두해둔 부분처럼 인덱스n의 문자가 같을때는 문자열 전체를 비교해준다.
    필요하다면 a와 b가 같을때는 return 0이다. 실제로 위에서
    if (a[n] === b[n]) return 0을 했으면 아래 n번째 index가 서로 같을때 if문까지 내려오지않는다.
    풀이.
function solution(s, n) {
  return s.sort((a, b) => {
    // NOTE : n번째 index가 서로 다를때
    if (a[n] > b[n]) return 1;
    if (a[n] < b[n]) return -1;

    // NOTE : n번째 index가 서로 같을때
    if (a > b) return 1;
    if (a < b) return -1;
    return 0;
  });
}

console.log(solution(['sun', 'bed', 'car'], 1));
console.log(solution(['abce', 'abcd', 'cdx'], 2));
profile
Front-End Developer #Nextjs #React #Typescript

0개의 댓글