문제 설명 |
정수를 저장한 배열, 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 |