알고리즘 코딩
배열에서 문자열 요소들을 오름차순 정렬하면 대문자부터 나온다.
가문비7
2023. 4. 21. 01:20
알고리즘 문제풀이 중 기억하고 싶은 부분이 있어 포스팅한다. 자세한 문제는 아래 링크와 같다. (프로그래머스)
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))