제일 작은 수 제거하기
문제 설명
정수를 저장한 배열, 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은 ( ) 이 중 최소값을 반환해준다.
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
'코딩 테스트 > [JS] programmers 코딩 테스트 연습' 카테고리의 다른 글
[Programmers/JS] 체육복 / 프로그래머스 코딩 테스트 연습 (0) | 2021.07.18 |
---|---|
[Programmers/JS] 모의고사 / 프로그래머스 코딩 테스트 연습 (0) | 2021.06.20 |
[Programmers/JS] 로또의 최고 순위와 최저 순위 / 프로그래머스 코딩 테스트 연습 (0) | 2021.06.20 |
[Programmers/JS] 완주하지 못한 선수 / 프로그래머스 코딩 테스트 연습 (0) | 2021.06.20 |
[Programmers/JS] 음양 더하기 / 프로그래머스 코딩 테스트 연습 (0) | 2021.06.20 |
댓글