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

Gaeun·2022년 11월 20일

프로그래머스 Lv.1

목록 보기
1/11

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

나의 풀이

function solution(s) {  
  const lower = [];
  const upper = [];
  
  for (let i in s) {
    s[i] === s.toLowerCase()[i] ? lower.push(s[i]) : upper.push(s[i])
  }
  
  
  return lower.sort().reverse().join('') + upper.sort().reverse().join('')
}
  1. 소문자와 대문자를 나눌 배열을 만들고
  2. 문자열을 순회하면서 문자열 인덱스와 소문자로 바꾼 문자열 인덱스의 값이 같다면 소문자 배열에, 다르다면 대문자 배열에 넣은 뒤
  3. sort().reverse()를 하여 내림차순으로 정렬하고 join('')을 사용하여 문자열로 다시 반환한다.

이 순서로 풀면서 '다른 쉬운 방법이 있을 것 같은데...' 라는 생각을 계속 했다. 제출 후 다른 사람의 풀이를 눌러보니... 있었다...^^....

다른 사람의 풀이

function solution(s) {
  return s
    .split("")
    .sort()
    .reverse()
    .join("");
}

나는... 소문자 따로 대문자 따로 했는데... 이렇게 간결하게 나올 수 있는 문제였다니.... 이 풀이를 보기 전에는 sort()를 사용하면 소문자와 대문자 관계 없이 a와 A가 같을 거라고 생각했다. 그래서 MDN을 찾아보니

기본 정렬 순서는 문자열의 유니코드 코드 포인트를 따릅니다.

라고 하더라... ^^.... 소문자의 유니코드와 대문자의 유니코드는 다르니까... 당연한 소리인데... 이걸 놓치고 있었다니... 바보같다... 🥲 그래도 오늘 배운 것이 있으니 괜찮다고 위로해야겠다....

오늘의 교훈

sort() 메서드는 소문자와 대문자를 구분하여 정렬한다. 유니코드가 다르기 때문이다!!!!

profile
🌱 새싹 개발자의 고군분투 코딩 일기

0개의 댓글