Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 아이폰12
- 알고리즘
- 전자계약솔루션
- 마케팅
- map
- 전자계약
- 코딩테스트
- 갤럭시노트20
- 모두의사인
- 블록체인
- 모두싸인마케팅
- 모두싸인마케터
- 좋은습관
- 독서리뷰
- 아이폰
- 옥소폴리틱스
- 자릿수더하기
- atomichabits
- javascript
- 모두싸인
- 독후감
- 모두사인
- 아이폰13
- 자바스크립트
- 습관
- 전자계약시스템
- 전자계약서비스
- 전자계약서
- 아주작은습관의힘
- 온라인계약
Archives
- Today
- Total
찰리의 이야기
Javascript 제일 작은 수 제거하기 본문
반응형
Javascript 제일 작은 수 제거하기
문제 : 정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.
제한 조건
- arr은 길이 1 이상인 배열입니다.
- 인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다.
입출력 예
arr / return
[4,3,2,1] | [4,3,2] |
[10] | [-1] |
주어진 코드 ↓
function solution(arr) {
var answer = [];
return answer;
}
먼저 생각한 것은
가장 작은 수를 찾는 것이 우선이라는 것 이었습니다.
그리고 배열을 탐색하면서 없애버리겠다고 생각했습니다.
만약에 해당 요소가 하나뿐이라면 indexof()를 사용해서
splice()로 한방에 없애버릴텐데,
1개 이상이라면,
어쩔 수 없이 배열을 탐색하면서 없애버려야 할 것입니다.
function solution(arr) {
let lowestNum = [];
for(let i=0; i<arr.length; i++){
if(i === 0){
lowestNum.push(arr[i]);
}else{
if(lowestNum[0] > arr[i]){
lowestNum[0] = arr[i];
}
}
}
for(let j=0; j<arr.length; j++){
if(arr[j] === lowestNum[0]){
arr.splice(j, 1);
}
}
if(arr.length === 0){
arr.push(-1);
return arr;
}else{
return arr;
}
}
가장 작은 수를 찾고,
그 수에 해당하는 요소를 제거하는 방식입니다.
여기까지가 제 풀이 방법이고,
다른 풀이법을 찾아보았습니다.
function solution(arr) {
if (arr.length > 1) {
var minNum = Math.min(...arr);
var idx = arr.indexOf(minNum);
arr.splice(idx, 1);
} else {
arr = [-1];
}
return arr;
}
배열에서 제일 작은 수를 찾을때
Math.min(...arr) 으로 간단히 찾을 수 있다.
아 놀라워라.
Spread Operator 사용하는 것에 익숙해지자.
전개연산자는 객체나 배열의 원소를 하나씩 꺼내어 펼쳐서 리턴하기 때문에
이렇게 간단히 사용할 수 있는 것이다.
다른 방법으로는
function solution(arr) {
if (arr.length === 1 ) {
return [-1]
}
const minValue = Math.min.apply(null, arr)
const index = arr.findIndex(value => value === minValue)
arr.splice(index, 1)
return arr
}
이렇게 function.apply(null, arr) 을 이용하는 방법이 있었다.
javascript 에서 함수를 호출하는 방법중 apply를 이용하면
두번째 파라미터로 배열을 전달해주면 되기 때문에
해당 문제에서 배열로 Math.min을 적용해줄 수 있었다.
이 두 방법중 앞의 전재연산자가 더욱 간단 명료한 것 같다.
전개 연산자를 잘 숙지해두자!
Javascript 제일 작은 수 제거하기
반응형
'찰리: 코딩 연습' 카테고리의 다른 글
Javascript 정수 내림차순으로 배치하기 (0) | 2021.09.13 |
---|---|
Javascript 정수 제곱근 판별 (0) | 2021.09.12 |
Javascript 최대공약수와 최소공배수 (0) | 2021.09.10 |
Javascript 콜라츠 추측 (0) | 2021.09.09 |
Javascript 평균 구하기 (0) | 2021.09.09 |
Comments