:ledger: 문제 설명

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

:one: 제한사항

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

:two: 입출력 예

s return
“Zbcdefg” “gfedcbZ”

:ledger: 문제 풀이

const solution = (s) => s.split("").sort().reverse().join("");

solution("Zbcdefg");

:one: 함수 선언

  • 화살표 함수를 사용하여 s를 매개변수로 받는다.

:two: 풀이

  • 먼저 문제 설명의 핵심 사항들만 정리해보았다.
    • s에 나타나는 문자를 큰것부터 작은순으로 정렬
    • s는 영문 대소문자로만 구성되어있음
    • 대문자는 소문자보다 작은것으로 간주함
  • 핵심 사항들에 관한 메서드 및 함수를 고민해보았음
    • 먼저 문자열을 배열로 만들어주기 위한 split, 리턴할 때 문자열로 감싸줄 join
    • 정렬해주기 위한 sort
    • 대문자,소문자 크기 reverse (역순)
  • 이후 하나씩 적용을 해보았다.
    • 먼저 배열로 감싸줌 s.split("")
    • 이후 정렬 + 역순 .sort().reverse()
    • 리턴해줄 때 문자열로 해줌 .join("")
  • 한 줄 코드 완성!

:three: 결과 반환

  • s = Zbcdefg을 대입하면 “gfedcbZ” 을 리턴함
  • s = RarrIt을 대입하면 “trraRI”을 리턴함

:fire: 다른 사람의 풀이 참고

메서드 체이닝으로 한 줄 코드 완성! 여러 메서드와 함수를 공부한 노력의 결과인 것 같다! 물론 723명이나 나와 같은 풀이 방법으로 문제를 풀었지만 개인적으로 정말 만족 오히려 전 문제였던 약수의 개수와 덧셈이 더 어려웠던 것 같다.. 메서드 체이닝도 좋지만 메서드 체이닝을 모르는 사람도 있기에 if문을 사용한 문제 풀이 방법이 다른 방면으로 좋아보이기도 하다.

// [10명] 총합 - if문을 사용한 풀이과정
function solution(s) {
  return s
    .split("")
    .sort((a, b) => {
      if (a > b) return -1;
      if (b > a) return 1;
      return 0;
    })
    .join("");
}

출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges