본문 바로가기
알고리즘 스터디/프로그래머스 스킬체크 레벨 1(끝)

[프로그래머스 스킬체크 레벨 1] 문자열 내림차순으로 배치하기 풀이 및 설명 - 자바스크립트[JavaScript]

by 레일라오리덕 2021. 7. 14.
728x90

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

 

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

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

programmers.co.kr

 

문제

 

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

 

 

제한 사항

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

결괏값 예시

 

s return
"Zbcdefg" "gfedcbZ"

 

기본 제공 틀

 

function solution(s) {
    var answer = '';
    return answer;
}

 

풀이 [JavaScript]

 

728x90

들어온 문자열 s값을 split함수를 사용하여 뜯어낸 후, sort함수를 사용하여 내림차순으로 정렬하고 다시 그 값들을 묶어주는 join함수를 사용하는 로직을 구현해보았습니다.

우선 여기서 charCodeAt을 사용한 이유는, 문자열 a는 아스키코드로 97, 대문자 A는 65로 시작하게 됩니다.

그렇기 때문에 자연적으로 a 이후에 오는 알파벳들은 더 큰 숫자이고, 대문자는 당연히 소문자보단 뒤로 빠지게 되어있습니다. 

그렇기 때문에, 들어온 s의 문자열들을 아스키코드로 각각 변환한 후, 변환한 값들은 문자열이아닌 숫자로 나오기 때문에, 숫자용 sort함수를 사용하여 내림차순으로 정렬해주었고, 정렬된 문자열을 다시 join함수를 사용하여 묶어주었습니다.

join함수는 기본적으로 ','를 사용하여 문자열들이 합해지기 때문에, join함수 안에, 아래와 같이 ''를 입력해주어야지 문자열 사이에 추가되는 것이 없이 묶어지게 되어있으므로, 이 부분을 주의하여 사용하면 좋을 것 같습니다.

function solution(s) {
    return s.split('').sort((a,b)=> b.charCodeAt(0)-a.charCodeAt(0)).join('');
}

 

채점 결과 [JavaScript]

 

 

 

728x90

댓글