코딩테스트 | (JavaScript) 프로그래머스 : 문자열 내림차순으로 배치하기

trevor1107·2021년 8월 23일
0

✅문제

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

❕ 제한사항

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

🎹📢입출력 예제

✍풀어보기

const solution=(s)=>s.split('').sort((a,b)=>a.charCodeAt()<b.charCodeAt()?1:-1).join('');

문자열을 문자 하나씩 쪼개 배열로 나누고 아스키코드 값을 기준으로 내림차순으로 정렬했다.
매 요소와 요소의 크기를 아스키코드로 변환해서 비교하기 때문에 속도가 좀 느린 것 같다.. 뭔가 놓친 기분!


🎈다른 사람의 풀이

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

뭔가 놓친 기분이 있었는데, 이 풀이를 보고 바로 번뜩 생각났다.
아스키 코드를 생각해 봤을 때 A == 65, a == 97이라서 내림차순이라면 z가 가장 크기 때문에 맨 앞에 오고 가장 작은 A가 맨 뒤로 정렬된다. 그래서 아스키 코드를 비교할 필요가 없어서 그냥 sort() 함수를 그냥 사용하면 되는데, 문자열은 유니코드 값으로 비교하고 오름차순으로 정렬된다. 정렬 후에 reverse()로 해주고 배열을 하나의 문자를 합치기위해 join('')으로 마무리!
유니코드를 보아도 A == 0041, a == 0061으로 A가 가장 작다
유니코드는 0000 ~ 0FFF까지 있다.



참고 자료 및 사이트 (감사합니다)

profile
프론트엔드 개발자

0개의 댓글