프로그래머스 문제풀이/Level 1
[프로그래머스] 제일 작은 수 제거
류시명
2020. 4. 4. 19:38
문제
정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.
제한 조건
- arr은 길이 1 이상인 배열입니다.
- 인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다.
접근
- 주어진 배열 내 최소값을 구한다.
- 해당 값을 지운다.
- 지웠을 때 배열의 길이가 0이면 -1채워서 리턴한다.
구현
const solution = arr => {
// 배열 초기화
let answer = [...arr];
// 배열 내 임의 요소로 최소값 초기화
let min = answer[0];
// 최소값 설정
for (let num of answer) {
if (min > num) min = num;
}
// 최소값 제거
const idx = answer.indexOf(min);
answer.splice(idx, 1);
// 빈 배열이면 -1 채워서 리턴
if (answer.length === 0) {
answer.push(-1);
}
return answer;
};
다른 풀이
다른 사람들의 풀이를 참고하다보니 Math.min()
이나 Math.max()
에 파라미터를 두 개 이상 줘도 된다는 걸 알았다.
왜 꼭 두 개를 줘야 한다고 생각했을까... 아무튼 삼항 연산자 등을 활용해서 다시 풀어봤다.
const solution = arr => {
let answer = [...arr];
// 주어진 배열 내 최소값 찾기
const min = Math.min(...answer);
// 최소값 제거
const idx = answer.indexOf(min);
answer.splice(idx, 1);
// 빈 배열일 때 처리
return answer.length === 0 ? [-1] : answer;
};
반응형