한 걸음씩 기록하며

[프로그래머스 코딩테스트] 문자열 내림차순으로 배치하기 본문

알고리즘 & 코딩테스트

[프로그래머스 코딩테스트] 문자열 내림차순으로 배치하기

Haksae 2022. 1. 19. 22:58

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

문제 설명 :

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

 

⛏제한 조건

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

 

📁 입출력 예시

👉🏻  답안

1) 간략하게 한줄로

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

2) 한줄로 쓴걸 조금 풀어서

function solution(s) {
    let a = s.split("")
    let b = a.sort(function(a, b) {
      if(a < b) return 1;
      if(a > b) return -1;
      if(a === b) return 0;
    })
    return b.join("")
}

📑  간단한 설명

1) 간략하게 한줄로 가능하다. 1)번을 풀어 쓴게 2) 번이다.

(사실 if (a===b) 빼도 된다.

 

이전 문제랑 약간 유사한 문제다. split을 해줘서 배열을 만들었고, sort 메서드를 사용했다.

문제는 내림차순으로 재배치하는 것이었기에, 재배열 조건을 내림차순으로 만들었다.

아래 참고와 같이 모든 대문자는 소문자보다 작으므로, 내림차순을 하면 자연스럽게 대문자가 뒤에 배치된다.

숫자로 환산 비교하여 순서를 매기는 것에 익숙해지면 좋을 듯 하다.

<참고>
두 문자열을 <, <=, >, >= 를 통하여 비교할 경우 비교의 기준은 알파벳 순서다.
알파벳 순서는 Unicode 문자 인코딩 기준으로 모든 대문자는 모든 소문자보다 이전에 나타나므로 모든 소문자보다 작다.
참고하면 좋을 블로그: https://comncme.tistory.com/entry/JavaScript-문자열-비교
Comments