개발자 '쑥말고인절미'

[프로그래머스] JS 제일 작은 수 제거하기 본문

STUDY/코딩테스트

[프로그래머스] JS 제일 작은 수 제거하기

쑥말고인절미 2022. 8. 19. 22:37

문제


내 답안

function solution(arr) {
    let answer = [];
    
    if(arr.length == 1){
        arr.push(-1);
        arr.shift();
        return arr;
    }
    
    for(let i = 0; i<arr.length; i++){
        answer.push(arr[i]);
    }
    
    for(let i = 0; i < arr.length; i++) {
        for(let j = 0; j < arr.length-1-i; j++) {
            if(arr[j] > arr[j+1]) {
                temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }
    
    for(let i = 0; i < answer.length; i++) {
        if(answer[i] === arr[0])  {
            answer.splice(i, 1);
            i--;
            break;
        }
    }
    
    return answer;
}

메모

분명 코드 실행했을 때는 통과하는데  제출만 하면 모든 테스트에서 실패가 나왔다. 아주 황당해서 질문하기를 보니 입력값으로 들어온 배열을 망가트려서 그런것 같다는 의견이 있었다. 그래서 그 의견을 반영해서 다시 코드를 수정했고 테스트를 통과할 수 있었다. 나는 엄청 장황하게 코딩했는데 친구 소스는 정말 짧고 깔끔해서 보기 좋았다... api를 생각하지 못하는것이 문제인지 뭐가 문제여서 내 소스가 긴건지 파악이 잘 안된다... 슬프다 코딩이 내 적성에 안맞는건지 정말 진지하게 고민된다. 물론 이번 문제를 풀면서 갑자기 느낀건 아니고 취업하고 조금씩 느껴오긴했다. 아래는 친구가 작성한 소스이다.

function solution(arr) {
    
    var min = Math.min.apply(Math, arr);
    var i = arr.indexOf(min);
    
    if(arr.includes(10) && i == 0){
        return [-1];
    }else if(i > -1){
         arr.splice(i,1);
        return arr;
    }
}

참고링크