[프로그래머스] 문자열 내림차순으로 배치하기

드한승훈·2020년 8월 21일
0

문자열 내림차순으로 배치하기

출처

문제 요약

문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수,

solution을 완성해주세요.s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.

문제 풀이

1번째

const solution = (s) => {
  if (s.length === 1) return s;
  return s
    .split("")
    .sort((a, b) => {
      if (a === a.toUpperCase() && b != b.toUpperCase()) return 1;
      if (b === b.toUpperCase() && a != a.toUpperCase()) return -1;
      return a.localeCompare(b)
    })
    .join("");
};

최근에 알게 된 localeCompare를 사용하고 싶어 접근한 방법 하지만 localeCompare는 대소문자 구분을 하지 않고 한 글자 단위 비교에는 적합하지 않아보인다.

2번째

const solution = (s) => {
  if (s.length === 1) return s;
  return s
    .split("")
    .sort((a, b) => (b > a ? 1 : -1))
    .join("");
};

문자의 대소 비교를 하면 아스키코드 값을 비교하기 때문에 자동적으로 대소문자 비교와 정렬이 가능하다.

3번째

const solution = (s) => {
  if (s.length === 1) return s;
  return s
    .split("")
    .sort()
		.reverse()
    .join("");
};

sort() 메소드가 기본적으로 오름차순을 제공하기때문에 sort 결과값에 reverse 를 하면 된다.

profile
프론트 엔드 개발자

0개의 댓글