1차 공부/알고리즘

제일 작은 수 제거하기

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

 

제한 조건
arr은 길이 1 이상인 배열입니다.
인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다.

 

 

처음 문제를 풀 때 제한조건을 이해하지 못했었다.

"인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다." 이게 중복 값이 없다는 뜻이다.

function solution(arr) {
    var answer = [];
    let a = arr.indexOf(Math.min(...arr));  //...으로 배열을 불러옴. 가장 작은 수의 index찾음
    arr.splice(a, 1);   //arr에서 인덱스 a로부터 1개 지움(가장작은수를 지움)
    if (arr.length===0) {   //만약 작은수를 지운 배열의 길이가 0이라면 (빈배열일때)
        answer = [-1]   //-1이 든 배열을 출력하고
    } else {    //빈 배열이 아니라면
        answer = arr    //작은수를 제거한 배열을 출력하라
    }
    return answer
}

처음에 풀때 sort를 사용해서 내림차순으로 정렬한 뒤 마지막 값을 pop()으로 제거하려고했는데,

이러면 배열이 섞이기 때문에 정답처리가 되지않았다.

 

 

 

 

function solution(arr) {
    const index = arr.indexOf(Math.min(...arr));    //...으로 배열을 불러옴. 가장 작은 수의 index찾음
    arr.splice(index, 1);                           //arr에서 인덱스 a로부터 1개 지움(가장작은수를 지움)
    return arr.length === 0 ? [-1] : arr;   //
  }

삼항연산자를 이용한 풀이

'1차 공부 > 알고리즘' 카테고리의 다른 글

하샤드 수  (0) 2022.11.23
콜라츠추측  (0) 2022.11.23
정수 제곱근 판별  (0) 2022.11.23
정수 내림차순으로 배치하기  (0) 2022.11.23
자연수 뒤집어 배열로 만들기  (0) 2022.11.23