프로그래머스 1단계 : 문자열 내림차순으로 배치하기
코딩테스트 연습 > 연습문제 > 문자열 내림차순으로 배치하기
✔ 문제 설명
문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요. s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.
✔ 제한 사항
str은 길이 1 이상인 문자열입니다.
✔ 입출력 예
s | return |
---|---|
"Zbcdefg" | "gfedcbZ" |
✔ 문제풀이
function solution(s) {
var answer = '';
return s.split('').sort().reverse().join('')
// .sort(function(a,b){return b.localeCompare(a)}).join('')
// .sort(function(a,b){return b.localeCompare(a)}).join('')
// return answer;
}
✔ 설명
계속 localeCompare사용해서 문자로 출력할 생각만 했네요. 아무생각없이 지우다가 성공했습니다. 찾아보니 sort()를 사용하면 유니코드 순으로 정렬해준다고 하네요. 쉬울뻔했죠?
✔ 다른사람의 풀이
function solution(s) {
let answer = [[],[]];
for (let i=0; i < s.length; i++) {
if(s[i] === s[i].toUpperCase()) {
answer[1].push(s[i])
} else {
answer[0].push(s[i])
}
}
let ans1 = answer[0].sort().reverse().join('');
let ans2 = answer[1].sort().reverse().join('');
answer = [ans1, ans2].join('')
return answer
}
조건문으로 대문자라면 뒤의 배열에 아니라면 앞에배열에 넣고 조인으로 합쳐줬네요. 원래 하려고했던 방식이었는데 이제보니 너무 길군요. 이상입니다.
댓글