알고리즘 문제풀이 중 기억하고 싶은 부분이 있어 포스팅한다. 자세한 문제는 아래 링크와 같다. (프로그래머스)
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))
'알고리즘 코딩' 카테고리의 다른 글
배열에서 요소 3개를 더했을 때, 소수가 되는 경우의 개수 (0) | 2023.04.22 |
---|---|
재귀함수. 집요한 정리 (0) | 2023.04.22 |
같은 숫자는 싫어 ! 알고리즘 (0) | 2023.04.18 |
최소직사각형 알고리즘 feat. apply() 메서드 (0) | 2023.04.18 |
자연수가 하샤드 수인지 판별하는 알고리즘 (0) | 2023.04.18 |