본문 바로가기

프로그래머스/구현

[문자열] 프로그래머스 '문자열 내 마음대로 정렬하기' - js

반응형

1. 문제

https://school.programmers.co.kr/learn/courses/30/lessons/12915

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

2. 설명

문자열을 정렬하는 문제이기 때문에 sort()를 사용한다.

 

먼저 sort() 구현방식을 살펴보자.

숫자의 오름차순 정렬, 내림차순 정렬을 살펴보자.

const arr = [22, 11, 2, 9, 1, 5];

arr.sort((a, b) => a - b);

//내림차순
arr.sort((a, b) => b - a);

문자열의 오름차순 정렬, 내림차순 정렬을 살펴보자.

const arr = ['kiwi', 'apple', 'melon', 'grape', 'banana'];

arr.sort();

// 내림차순

arr.sort(function (a, b) {
    if (a > b) return -1;
    else if (b > a) return 1;
    else return 0;
  });

이 문제에서는 n번째 인덱스를 기준으로 정렬을 해야하기 때문에, 

a.charAt(n)과 b.charAt(n)을 비교해준다.

만약 a.charAt(n)이 b.charAt(n)보다 사전순으로 뒤에 있다면 1을, 반대라면 -1을 리턴한다.

만약 두 값이 같으면 알파벳 사전순으로 정렬해야하므로 a가 b보다 크면 1을, 반대라면 -1을 리턴하여 정렬해준다.

3. 코드

function solution(strings, n) {
    let newStr = strings.sort((a,b) => {
      if(a.charAt(n) > b.charAt(n)){
        return 1;
      }
      if(a.charAt(n) < b.charAt(n)){
        return -1;
      }else{
        return a > b ? 1:-1;
      }
    })
    
    return newStr;
   }
}
반응형