[Today I Learned] 1월 1주차 day1

suwoncityboyyy·2023년 1월 3일
0

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

#lv1 , #programmers

문제 설명

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

풀이

문제를 읽어보고 이거는 딱 ASCII코드를 이용해서 풀어야겠다는 생각이 들었다. 밑에는 ASCII 코드 표이다.

js에는 문자열을 아스키코드 번호로 변환해 주는 메서드가 있다.
바로 charCodeAt 이다. 그 반대로 ASCII코드를 문자열로 구성해주는 함수가 있다. String.fromCharCode 이다. 이 두 메서드를 이용해서 문제를 풀어 봤다.

function solution(s) {
    return s.split('').map(el => el.charCodeAt()).sort((a,b) => b-a).map(el => String.fromCharCode(el)).join('')
}

근데 다른 문제풀이법을 보니까 굳이 map과 ascii 변환 메서드가 없어도 됐었다...
sort() 메서드를 쓰면 유니코드 순으로 정렬을 해준다는 것을 깨달았다..
결국 다시 리팩토링을 해서 풀어봤다.

function solution(s) {
  return s
    .split("")      // 문자열 쪼개주고
    .sort()         // 오름차순 정렬
    .reverse()      // 배열을 반전 시켜주는 메서드
    .join("");      // "" 를 합쳐주는 메서드 (문자열로 바꿔줌)
}

다 아는 메서드였지만 이렇게 할거라고는 생각을 못했다...

profile
주니어 개발자 기술노트

0개의 댓글