프로그래머스 코딩테스트 연습 <문자열 내 마음대로 정렬하기>

5831 단어 CodingTestCodingTest

🔎 <문자열 내 마음대로 정렬하기>

📝 답안

코딩테스트 연습을 이제 막 시작해 부끄러운 수준의 내 답안과 다른 사람들의 답안을 확인해보자.

🚩 제출한 답안

function solution(strings, n) {
  var answer = [];

  answer = strings.sort((a, b) => {
    if (a[n] !== b[n]) {
      return a.charCodeAt(n) - b.charCodeAt(n);
    } else {
      return a.localeCompare(b);
    }
  });

  return answer;
}

주어진 인덱스의 글자가 다른 경우 charCodeAt()을 통해 해당 문자의 UTF-16 코드를 비교하고, 같은 경우에는 localeCompare()로 사전순으로 정렬하는 콜백함수를 가진 sort() 메서드를 통해 정렬한다.

주요 활용 문법

charCodeAt(), localeCompare(), sort()

🚩 다른 사람 답안

localeCompare()와 조건부 삼항 연산자를 활용한 답안

function solution(strings, n) {
  // strings 배열
  // n 번째 문자열 비교
  return strings.sort((s1, s2) => s1[n] === s2[n] ? s1.localeCompare(s2) : s1[n].localeCompare(s2[n]));
  // n번째 문자가 같으면, 해당 단어를 비교하고, 다르면 그 문자를 비교한다.
}

n번째 문자가 같으면 단어를 비교하고, 다르면 해당 문자를 비교하게끔 조건부 삼항 연산자를 구성할 수 있다.

📌 공부할 점

localeCompare()

localeCompare() 메서드는 기준 문자열과 비교했을 때 비교 대상 문자열이 정렬상 전에 오는지, 후에 오는지 혹은 같은 순서에 배치되는지를 알려주는 숫자를 반환하는데, 이를 통해 사전순으로 배열을 정렬할 수 있다.

조건부 삼항 연산자

조건부 삼항 연산자 조건 ? 참인 경우 : 거짓인 경우를 활용하면 더 간결하게 코드를 구성할 수 있다.

좋은 웹페이지 즐겨찾기