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를 활용하여 간단하게 풀이할 수 있는데, 자바스크립트는 정렬 소스 코드가 파이썬보다 작성이 복잡한 것처럼 느껴진다. 정렬 함수는 문제 풀이에 상당히 자주 쓰이기 때문에 반복적인 학습을 통해 꼭 숙지해야겠다.