개발/코딩테스트

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

prpn97 2023. 4. 19. 21:13

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

 

<제한 사항>
str은 길이 1 이상인 문자열입니다.

 

<입출력 예>

s return
"Zbcdefg" "gfedcbZ"

<문제 풀이>

function solution(s) {
    let big = []
    let small = []
    for(let i = 0; i < s.length; i++){
        if(s[i]===s[i].toUpperCase()){
            big.push(s[i])
        }else small.push(s[i])
    }small.sort((a,b)=>b.localeCompare(a))
    big.sort((a,b)=>b.localeCompare(a))
    
    let answer = small.join('')+big.join('')
    return answer
}

대문자를 big, 나머지(소문자)를 small에 담고,

거꾸로 정렬하는 방법으로 localeCompare함수를 사용했다. 

그리고 배열을 join으로 문자열로 바꿔주었고, 둘을 더했다. 

 

<다른 풀이>

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

나도 막힘없이 바로 풀긴 했지만, 아주 간단한 것 같아서 가져왔다. 

 

<코멘트>

프로그래머스 0단계를 다 마무리하고 이제 1단계를 쉬운문제부터 풀고 있는데,

0단계 끝내갈 때 내 수준에서는 어려워서 1시간넘게 고생한 문제들이 꽤 있는데,

1단계를 시작하기 전에 두려움이 있었다. 

그런데, 1단계에서 쉬운 문제부터 푸니까 너무 쉬워서 막힘없이 통과되고 있다.

성장했다고 조금은 자존감을 높혀가며... 더욱 정진해야겠다!

728x90