728x90

문제


https://programmers.co.kr/learn/courses/30/lessons/12917?language=javascript 

 

코딩테스트 연습 - 문자열 내림차순으로 배치하기

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

programmers.co.kr

 

코드


function solution(s) {
    const upper = s.split("").filter((i) => (i == i.toUpperCase())).join("");
    const lower = s.split("").filter((i) => (i == i.toLowerCase())).join("");
    return (lower.split("").sort().reverse().join("")) + (upper.split("").sort().reverse().join(""));
}

 

후기


  • 문제 이해 : 문자열 s를 내림차순으로 배치하는데 대문자 < 소문자로 간주한다
  • 소문자와 대문자를 나누어서 각각 sort를 진행하고 최종적으로 합치면 되겠다는 생각을 하였다
  • 문자열 s에서 소문자와 대문자를 나누기 위해서 대소문자를 체크하는 방법을 알아야 했는데, filter함수를 통해 (i == i.toUpperCase()) 를 통해 여부를 알 수 있었다
  • 하지만... 내가 아주 큰 것을 놓치고 있었다. 원래 대문자는 소문자보다 크다고 간주되니 대소문자를 나눌필요없이 문자열 s를 바로 sort().reverse() 적용해주면 한 번에 해결될 문제였다.. ^^
  • 즉, return s.split("").sort().reverse().join(""); 이 한줄로 해결되는 문제였다고 한다

+ Recent posts