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

개발잘하기프로젝트·2020년 11월 11일
1
post-thumbnail

🤔 문제

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

문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.
s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.

❗️ 제한

str은 길이 1 이상인 문자열입니다.

💡 접근

solution 1은 대문자 large와 소문자 small을 구분해서 문자열을 모두 더해주는 방식으로 코드를 작성했다. solution 2의 경우 sort() 메서드는 기본적으로 대문자가 소문자봗 우선순위에 있기 때문에 따로 구분하지 않고 바로 해결했다. solution 1에서 reduce() 메서드를 통해 문자열을 모두 더해 리턴해주었지만 solution 2join() 메서드를 쓰면 훨씬 간결하게 정답을 도출할 수 있다.

🧑🏻‍💻 코드

// solution 1
function solution(s) {
  const large = [...s]
    .filter(str => str === str.toUpperCase())
    .sort()
    .reverse();
  const small = [...s]
    .filter(str => str === str.toLowerCase())
    .sort()
    .reverse();
  const desc = [...small, ...large];
  const answer = desc.reduce((a, b) => a + b, '');
  return answer;
}

// solution 2
function solution2(s) {
  const answer = [...s].sort().reverse().join('');
  return answer;
}

solution('Zbcdefg'); // 'gfedcbZ'

📝 참고

MDN - Array.prototype.sort()

sort() 메서드 간단한 활용

  • 자바스크립트의 sort() 메서드는 기본적으로 문자열을 기준으로 오름차순으로 정렬한다.
    NAVER D2 - 한글 인코딩의 이해 1편: 한글 인코딩의 역사와 유니코드
  • 대문자가 소문자보다 우선순위에 있다.
  • localeCompare()메소드는 영어알파벳 이외의 문자들도 사전적 순서로 비교할 수 있다.
  • 숫자 정렬의 경우 compareFunction을 통해 비교할 수 있다.
profile
🏠 ☕️ 🎞 🌿 + 🧑🏻‍💻

0개의 댓글