문제

 

풀이 코드

// 방법 1. 아스키 코드로 변환하여 계산
 function solution(strings, n) {
   return strings.sort().sort((a, b) => a.charCodeAt(n) - b.charCodeAt(n));
 }

// 방법 2. localeCompare 메서드 이용
function solution(strings, n) {
  return strings.sort((a, b) => {
    return a[n] === b[n] ? a.localeCompare(b) : a[n].localeCompare(b[n]);
  });
}

 

풀이 과정

두가지 방법으로 풀었다.

 

첫번째 방법은 우선 문자열 배열 자체를 오름차순 정렬을 수행하고,

곧바로 다시 sort 함수를 사용하는데, 여기서 문제에서 주어진 인덱스의 아스키 값( charCodeAt ) 을 비교하여 재 정렬 하도록 했다.

 

두번째 방법은 localeCompare 함수를 이용하여, 문자열 비교를 통해 정렬 하였다, 여기서 주어진 인덱스의 값이 같다면, 문자열 자체를 비교하여 판단하게 하였고, 같지 않다면, 해당 문자열의 인덱스 기준으로 비교하도록 하였다.

 

두가지 방법다 검색을 통해 해결 했지만, localCompare 함수는 정말 매력적이라고 느껴졌다.

+ Recent posts