본문 바로가기

알고리즘 코딩

배열에서 문자열 요소들을 오름차순 정렬하면 대문자부터 나온다.

알고리즘 문제풀이 중 기억하고 싶은 부분이 있어 포스팅한다. 자세한 문제는 아래 링크와 같다. (프로그래머스)

https://school.programmers.co.kr/learn/courses/30/lessons/12917

 

기억할 점 : 배열에서 문자열 요소들을 sort() 메서드로 오름차순 정렬하면 대문자부터 나온다.

 

이걸 몰라서 풀이가 엄청나게 돌아서 갔다. sort() 만 하면 알아서 대문자가 앞에 오고 그걸 reverse() 하면 끝나는 문제였다. 

그런데 나는 sort 메서드를 쓰면서도 대소문자를 구분해 배열하는 코드를 굳이 만들어 넣어 줬다. 

아래와 같다. 

function solution(s) {

    function isUpper(strValue) {
        let firstStrValue = strValue.charAt(0);
        return firstStrValue.match(new RegExp(/^[A-Z]/)) !== null;    
      }

    let answer = ""
    answer = s.split("").sort((a, b)=>{
        if(isUpper(a)=== true && isUpper(b)===false) {
            return 1
        } else if(isUpper(a)=== false && isUpper(b)===true) {
            return -1
        } else { return a > b ? -1 : 1}
    }).join('')


    return answer
}

s= "Cbzcg"
solution(s)

 

모범답안? 은 아래와 같다. sort() 는 대문자 먼저 나오게 하는 메서드다.

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

  s= "CbzcAg"
console.log(solution2(s))