일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 자바스크립트 reduce()
- 개발일기
- RN 프로젝트
- 엘리스
- 코드스테이츠
- 자바스크립트 날씨
- [파이썬 실습] 기초 문제
- 코딩부트캠프
- [파이썬 실습] 심화 문제
- leetcode
- 엘리스 AI 트랙 5기
- JavaScript
- 자바스크립트
- 자바스크립트 날씨 웹 만들기
- [파이썬 실습] 중급 문제
- [AI 5기] 연습 문제집
- 프론트개발공부
- 개발공부
- 프로그래머스
- 간단한 날씨 웹 만들기
- 엘리스 ai 트랙
- 날씨 웹 만들기
- 삼항연산자
- 자바스크립트 split()
- 프론트개발
- 자바스크립트 sort()
- HTML
- reactnativecli
- 리트코드
- 부트캠프
- Today
- Total
개발조각
[프로그래머스] 제일 작은 수 제거하기 본문
이번 문제는 내장 함수를 얼마큼 잘 알고 있느냐의 싸움인 것 같아요.
문제는 쉬운편인데 좀 더 짧게 쓰려고 노력했습니다.
해결방안
function solution(arr) {
return arr.length < 2 ? [-1] : arr.filter(a => a > Math.min(...arr));
}
이번문제는 해결방안 순서를 쓰기 애매해서 바로 해결방안에 대해 설명하겠습니다.
이 문제를 보면 배열 arr이 빈 배열인지 아닌지 판단하고
빈 배열이 아닐 경우 배열 arr에서 가장 작은 수를 제거한 배열을 리턴하고
배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴해주는 문제입니다.
그래서 조건문을 써주었는데요. 그중 삼항연산자를 써주었습니다.
삼항 연산자
구문 : 조건 ? true : false
- 조건이 true이면 true를 실행
- 조건이 false이면 false를 실행
이제 삼항 연산자 가지고 조건과 true, false에 무엇을 넣을 건가에 대해 써보자면
- 조건 : arr 배열의 길이가 2보다 작은지 아닌지 판단 -> arr.length < 2
- true : arr 배열의 길이가 2보다 작으면 [-1]반환 -> [-1]
- false : arr 배열의 길이가 2보다 크면 arr에서 가장 작은 수 제거한 배열 반환 -> arr.filter(a => a > Math.min(...arr));
조건 : arr 배열의 길이가 2보다 작은지 아닌지 판단 -> arr.length < 2
제한 조건 "arr은 길이 1 이상인 배열입니다."라는 조건이 있습니다.
그래서 여기서 "리턴하려는 배열이 빈 배열인 경우"라는 말은
"arr의 배열의 길이가 1"이라는 말입니다.
그래서 조건에 arr.length < 2로 써주었습니다.
- treu : 빈 배열인 경우
- false : 빈 배열이 아닌 경우
true : arr 배열의 길이가 2보다 작으면 [-1]반환 -> [-1]
여기는 딱히 쓰말이 없어서 다음으로 넘어가겠습니다.
false : arr 배열의 길이가 2보다 크면 arr에서 가장 작은 수 제거한 배열 반환
-> arr.filter(a => a > Math.min(...arr));
filter()메서드를 통해 조건에 알맞은 새로운 배열을 반환해 주었습니다.
filter()메서드는 map()메서드랑 쓰임이 다른데요.
- map() : 배열 안에 원소 전체를 바꾸고 싶을 때
- filter() : 배열안에 원소 중에서 원하는 값만 가지고 오고 싶을 때
그래서 이문제에서는 arr에서 가장 작은 수 제거해야 돼서 filter()메서드를 사용하였습니다.
MDN Web Docs
filter() 메서드는 주어진 함수의 테스트를 통과하는 모든 요소를 모아 새로운 배열로 반환합니다.
구문 : arr.filter(callback(element[, index[, array]])[, thisArg])
- callback :각 요소를 시험할 함수. true를 반환하면 요소를 유지하고, false를 반환하면 버립니다. 다음 세 가지 매개변수를 받습니다.
- element : 처리할 현재 요소.
- index Optional : 처리할 현재 요소의 인덱스.
- array Optional : filter를 호출한 배열.
- thisArg Optional : callback을 실행할 때 this로 사용하는 값.
// filter() 메서드 예제
const words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];
const result = words.filter(word => word.length > 6);
console.log(result); // result = ["exuberant", "destruction", "present"]
이제 filter을 할 조건을 만들어줘야 되는데요.
- 원소 > arr에서 가장 작은 수
이렇게 써주면 되겠죠?
여기서 arr에서 가장 작은 수를 구하기 위해서는 Math.min()함수를 사용하시면 쉽게 구하실 수 있습니다.
MDN Web Docs
Math.min() 함수는 주어진 숫자들 중 가장 작은 값을 반환합니다.
문법 : Math.min([value1[, value2[, ...]]])
- value1, value2, ... : 숫자형
// Math.min()함수 예제
var x = 10, y = -20;
var z = Math.min(x, y);
이 문제에서는 배열에서의 최솟값을 구해야 됩니다.
Math.min()의 () 안에 스프레드 연산자를 넣으시면 배열에서의 최솟값을 쉽게 구할 수 있습니다.
테스트 1 (arr = [4,3,2,1])
Math.min(...arr)) === Math.min(1,2,3,4));
여기까지 프로그래머스 제일 작은 수 제거하기 해결방안에 대해 설명해보았습니다.
'알고리즘🅰 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 최대공약수와 최소공배수 (0) | 2022.03.04 |
---|---|
[프로그래머스] 짝수와 홀수 (0) | 2022.03.04 |
[프로그래머스] 정수 제곱근 판별 (0) | 2022.03.03 |
[프로그래머스] 정수 내림차순으로 배치하기 (0) | 2022.03.02 |
[프로그래머스] 자연수 뒤집어 배열로 만들기 (0) | 2022.03.02 |