프로그래머스: 문자열 내림차순으로 배치하기

승헌·2022년 3월 3일
0

프로그래머스 Level 1

목록 보기
24/51

(문제링크)

문제

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

제한사항

  • s는 길이 1 이상인 문자열입니다.

입출력 예

sreturn
"Zbcdefg""gfedcbZ"

풀이

문자열 s의 요소 각각을 비교해 정렬해야 하므로, 문자열을 배열로 변환한다.
변환한 배열을 내림차순으로 정렬한 뒤 다시 문자열로 바꿔 return하면 된다.

  • 정렬은 어떻게 할까?

문자를 큰것부터 작은 순으로 정렬 하는 것이 목적이므로 내림차순이라는 것을 알 수 있다.
문자를 내림차순으로 정렬하려면 ASCII 코드로 비교하는 방법이 있다.
ASCII 코드를 보면 마침 대문자가 소문자보다 값이 작다!

문제가 ASCII 코드로 내림차순 정렬하라고 알려주고 있다..

  • 문자열을 어떻게 배열로 바꿀까?

단순하게 생각하면, 배열을 만들어서 배열에 문자열의 문자들을 순서대로 넣는 방법이 있다.

let arr = [];
for (let i=0; i<s.length; i++) {
  arr.push(s[i]);
}

이거보다 더 멋있는 방법이 있다. String.split() 을 사용하면 된다.

let arr = s.split('');

console.log(s); // "Zbcdefg"
console.log(arr); // [Z, b, c, d, e, f, g]

'' 로 문자열을 split하면 문자마다 나눠져 배열에 저장된다.

  • 배열을 어떻게 문자열로 바꿀까?

이것 역시, 단순하게 한다면 for문을 이용해 한 문자씩 연결할 수 있다.

let answer = '';
for (let i=0; i<arr.length; i++){
  answer += arr[i];
}

Array.join() 을 사용하면 훨씬 간결해진다.

let str = arr.join('');

console.log(arr); // [Z, b, c, d, e, f, g]
console.log(str); // "Zbcdefg"

join 의 매개변수에 아무것도 넣지 않고 join()으로 사용한다면, 요소들이 쉼표 , 로 나누어져 저장된다.
위처럼 다 이어붙이고 싶다면 꼭 매개변수에 '' 를 넣어줘야 한다.

소스코드

function solution(s) {
    let arr = s.split('');
    arr.sort((a, b) => b.charCodeAt(0) - a.charCodeAt(0));
    
    return arr.join('');
}
profile
https://heony704.github.io/ 이리콤

0개의 댓글