Programmers/Lv1
[프로그래머스] 문자열 내 마음대로 정렬하기 (Lv1)
hellosonic
2023. 7. 24. 12:11
문제요약
나의 코드 및 설명
- 아스키코드를 활용하여 직접 구현하다가 실패했다.. 문제의 테스트케이스와 내가 추가한 테스트케이스는 통과하지만, 히든 테스트케이스는 계속 실패했다.
function solution(strings, n) {
var answer = [];
for (var s of strings){
var flag = false;
if (answer.length == 0){ //아직 answer이 비어있을 때,
answer.push(s);
} else { //answer에 어떠한 문자열이 있을 때
for (var i = answer.length-1 ; i > -1 ; i--){
if (answer[i][n].codePointAt() > s[n].codePointAt()){
if (i == 0){
answer.unshift(s);
break;
} else{
continue;
}
} else if (answer[i][n].codePointAt() < s[n].codePointAt()){
answer.splice(i+1, 0, s);
break;
} else { // 앞에있는 인덱스와 같을때
for (var j = i; j > -1; j--){
if (answer[j] > s){
if (j == 0){
answer.unshift(s);
flag = true;
break;
} else {
continue;
}
} else {
answer.splice(j+1, 0, s);
flag = true;
break;
}
}
}
if (flag == true){
break;
}
}
}
console.log(answer);
}
return answer;
}
다른 코드 및 설명
function solution(strings, n) {
var answer = [];
answer = strings.sort(function(a,b){
if (a[n] > b[n]) return 1;
else if (a[n] < b[n]) return -1;
else {
return a > b ? 1 : -1;
}
})
return answer;
}
자바스크립트 정렬 메서드
arr = [2,3,1,4]
// 오름차순 정렬
var answer = arr.sort(function(a,b){
if (a>b) return 1;
else if (a<b) return -1;
else return 0;
})
// 내림차순 정렬
var answer = arr.sort(function(a,b){
if (a<b) return 1;
else if (a>b) return -1;
else return 0;
})
피드백
파이썬은 sort() 함수와, lambda를 활용하여 간단하게 풀이할 수 있는데, 자바스크립트는 정렬 소스 코드가 파이썬보다 작성이 복잡한 것처럼 느껴진다. 정렬 함수는 문제 풀이에 상당히 자주 쓰이기 때문에 반복적인 학습을 통해 꼭 숙지해야겠다.