본문 바로가기
코딩 테스트/[JS] programmers 코딩 테스트 연습

[Programmers/JS] 제일 작은 수 제거하기 / 프로그래머스 코딩 테스트 연습

by M개발자 2021. 6. 20.
반응형

제일 작은 수 제거하기


문제 설명

 

정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.


예시

 

arr return
[4, 3, 2, 1] [4, 3, 2]
[10] [-1]

코드 해석 및 전체 코드

 

알고리즘 

1-1. arr 배열의 길이가 1인 경우 [-1] 반환

1-2. answer 배열 = arr 배열

2. 최소값 구하기

3. answer 길이만큼 반복하여 최소값 같을 경우 인덱스 삭제

 

1-1. arr 배열의 길이가 1인 경우 [-1] 반환

굳이 배열 길이 잡아서 값 넣지 않아도 됨. 굳 !!!!!!

사실 몰라서 자바랑 비슷하게 했었지만 다른 분들의 코드보고 익히게 되었다 ㅎㅎ

 

2. 최소값 구하기

한줄이면 최소값을 구할 수 있다니..... 완전 대박@@

Math 내장 객체에 있는 최소값을 반환해주는 min과 

배열을 전개해주는 ...을 사용하였다. 

...answer는 (1, 2, 3, 4, 5)와 같고 Math.min은 ( ) 이 중 최소값을 반환해준다.

Math.min 참고 블로그

 

3. answer 길이만큼 반복하여 최소값 같을 경우 인덱스 삭제

자바나 씨에선 링크드리스트를 사용해야 배열을 자유롭게 삭제할 수 있지만 js에서는 간단하게 삭제 및 추가를 할 수 있어서 좋은거 같다. 얼른 내거가 되었으면 ㅎㅎ

다양하고 손쉬운 코드들도 있었지만 아직 이해할 수준이 되지 못하므로 splice를 사용하여 최소값을 삭제하였다. 

for문으로 answer의 길이만큼 반복하여 answer[i]가 최소값과 같을 시 splice(i, 1)을 하여 i번째만 삭제하고 for문을 탈출한다. 

splice(index, deleteCount) 메서드
첫 번째 매개변수 : 조작을 가할 첫 번째 요소를 가리키는 인덱스(index)
두 번째 매개변수 : deleteCount로, 제거하고자 하는 요소의 개수

 

function solution(arr) {
    let answer = arr;
    
    if(arr.length == 1){
        return [-1];
    }
    
    //let min = Math.min.apply(null, answer);
    let min = Math.min(...answer);
    
    for(let i = 0; i < answer.length; i++){
        if(answer[i] === min) {
            answer.splice(i, 1)
            break;
        }
            
    }
    
    return answer;
}

github

programmers

반응형

댓글