문제 설명
정수 리스트 num_list가 주어질 때, 첫 번째로 나오는 음수의 인덱스를 return하도록 solution 함수를 완성해주세요. 음수가 없다면 -1을 return합니다.
음수를 찾아서 그 요소의 인덱스를 찾는다는 절차까지는 바로 생각해냈다.
그래서 처음에는 아래와 같이 풀이했다.
function solution(num_list) {
const answer = num_list.indexOf(num_list.find((num) => Math.sign(num) === -1));
return answer;
}
Math.sign()
Math.sign() 함수는 주어진 수가 음수인지 양수인지 0인지 판별해서 각각 -1 / 1 / 0으로 반환해주는 함수다.
사용 방식 :
Math.sign(숫자)
find()
배열 콜백 함수.
주어진 판별 함수를 만족하는 첫 번째 요소의 값을 반환하고, 만약 그런 요소가 없다면 undefined를 반환한다.
맨 첫 번째만 반환하기 때문에 여러 개의 요소를 뽑아낼 때는 못 쓴다. 은근히 헷갈리니까 주의...
대신에 배열이 아니라 값으로 반환해주기 때문에
개인 프로젝트 당시 깊이가 깊은 JSON에서 필요한 걸 뽑아낼 때 filter()보다 사용하기 편리했던 경험이 있다.
사용 방식 :
find((현재 요소값) => 실행할 함수. 보통 조건문의 표현식처럼 작성)
Ex] find(element => element > 10);
indexOf()
배열에서 지정된 요소를 찾을 수 있는 첫 번째 인덱스를 반환한다.
만약 존재하지 않으면 -1을 반환한다.
사용 방식 :
indexOf(찾을 요소)
indexOf(찾을 요소, 검색 시작할 인덱스)
이렇게 메소드를 3개나 써서 풀었는데 알고 보니..........
그냥 findIndex() 메소드를 쓰면 한 방에 끝나는 거였다ㅠㅠ
function solution(num_list) {
return num_list.findIndex((num) => num < 0);
}
findIndex()
find() 메소드와 똑같이 주어진 함수에 맞는 첫 번째 요소를 찾아준다.
find는 값을 반환해주는 메소드고, findIndex는 인덱스를 반환해주는 메소드다.
그래서 만족하는 요소가 없을 경우 findIndex는 undefined가 아니라 indexOf처럼 -1을 반환한다.
'코딩테스트 > 프로그래머스 기초 트레이닝' 카테고리의 다른 글
[Javascript] 테스트에서 사용한 문자열 객체 메소드 정리 - replaceAll() includes() charAt() (0) | 2023.05.22 |
---|---|
[출력 문제] 자바스크립트로 테스트 입력값 받기 (Node.js) (0) | 2023.05.18 |
[Javascript] n개 간격의 원소들 (0) | 2023.05.18 |
[Javascript] 종종 쓰는 Math 객체 메소드 - abs() ceil() floor() round() max() min() (그리고 pow() sqrt()까지) (0) | 2023.05.17 |
[Javascript] 배열 만들기 - split() Array.from() 전개연산자 (0) | 2023.05.17 |
[Javascript] 자료형 변환 (0) | 2023.05.17 |
[Javascript] 문자열 자르는 메소드 - slice() substring() substr() (0) | 2023.05.17 |
[Javascirpt] 실수를 정수로 바꾸기 - parseInt() Math.trunc() (0) | 2023.05.16 |