
오늘은 팀원분의 도움으로 해결한 이야기!
근데 알고리즘 코드카타 한 문제 푸는데 이렇게 오래 걸려도 되나 싶음😅
문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.
s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.
- 입출력 예
- s ==> "Zbcdefg"
- return ==> "gfedcbZ"
function solution(s) {
var answer = "";
var strArray = [];
strArray = s.split("");
strArray.reverse();
strArray.forEach(function(item){
answer += item
})
return answer;
}
s를 strArray 배열에 잘라서 넣어주고, reverse()로 뒤집는다.strArray에 반복문을 사용해 answer에 문자열로 넣어준다.코드 실행 클릭 시 ==> "성공" 확인제출 후 채점하기 클릭 시 ==> "실패" 알럿vscode에서 실행해봐도
answer가"gfedcbZ"로 제대로 찍히는데 뭐가 문제지?..
하고 한참 고민하다 팀원분께 "도대체 뭐가 문제일까요..?" 라고 하소연을 했는데 해답을 찾았다!
🐱팀원분 왈 : "reverse()는 단순히 순서를 뒤집는 메소드이지, '정렬'하는 메소드가 아니에요!"
홀리.. 문제의 요구사항 자체가 '문자를 큰 것부터 작은 순으로 정렬해'..인데 정렬을 안하고 뒤집기만 했구나... 바로 감사합니다!!!!!!!!!!!!!!!!!!!!!! 외치고 다시 시작 👊
function solution(s) {
var answer = "";
var strArray = [];
strArray = s.split("");
strArray.sort(function(a, b) {
if(a < b) return 1;
if(a > b) return -1;
if(a === b) return 0;
});
strArray.forEach(function(item){
answer += item
})
return answer;
}
strArray 를 내림차순으로 sort한다.strArray에 반복문을 사용해 answer에 문자열로 넣어준다. function solution(s) {
return s
.split("")
.sort()
.reverse()
.join("");
}
sort() 하고 reverse() 하기join()을 사용해서 배열의 아이템들을 문자열로 합치기
sort()하고reverse()하면 되는 것을 너무 멀리 돌아갔구나..
처음엔sort()가 없이reverse()만 해서 '정렬'의 의미가 없었던 거다..!
문제를 푸는 데만 집중해서 문제의 의도를 파악하지 못한 나에게 큰 도움을 주신 🐱팀원분께 개큰감사를 전합니다!!! 😘