728x90
문제 설명
정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요.
단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요.
예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.
제한 사항
- arr은 길이 1 이상인 배열입니다.
- 인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다.
문제 풀이 방법
- 이 문제에서 우선적으로 조건을 걸어줘야 한다고 생각한 것은 가장 작은 수를 빼면 빈 배열이 되는 경우
즉, 배열의 길이가 1인 배열은 반드시 [-1]을 반환한다고 작성하는 것이다. - 이후, 길이가 2 이상인 배열의 경우에서는 펼침 연산자를 이용해 배열 요소들을 Math.min을 이용해 가장 작은 수를
알아 낸뒤 해당 숫자가 위치한 인덱스를 indexOf(num, 1)을 통해 숫자 1개의 인덱스를 얻는다. - 그리고 난 뒤 splice를 이용해 원본값에 접근해 가장 작은 값을 빼주어 수정해준다.
(얕은 복사를 하게되면 런타임이 늘어나지 않을까 하는 생각에 이렇게 했다....)
내가 작성한 코드
const solution = (arr) => {
if(arr.length === 1) return [-1];
else{
arr.splice(arr.indexOf(Math.min(...arr)), 1);
return arr;
}
}
728x90
'코딩 테스트 > 프로그래머스 코딩 테스트 연습' 카테고리의 다른 글
2Level / 연습문제 / 숫자 블럭 (0) | 2023.05.18 |
---|---|
2Level / 2018 KAKAO BLIND RECRUITMENT / [1차] 프렌즈4블록 (0) | 2023.05.15 |
2Level / 연습문제 / JadenCase 문자열 만들기 (0) | 2023.05.12 |
1Level / 연습문제 / 핸드폰 번호 가리기 (0) | 2023.02.05 |
1Level / 연습문제 / 숫자 문자열과 영단어 (0) | 2022.12.30 |