▶findIndex() 포스팅에서 알아본 findIndex()함수를 사용하는 간단한 예제가있어 정리해보고자 합니다.
문제설명
정수 리스트 num_list가 주어질 때, 첫 번째로 나오는 음수의 인덱스를 return하도록 solution 함수를 완성해주세요. 음수가 없다면 -1을 return합니다.
제한사항
- 5 ≤ num_list의 길이 ≤ 100
- -10 ≤ num_list의 원소 ≤ 100
입출력 예 & 설명
- 입출력 예 #1
- 5번 인덱스에서 음수가 처음 등장하므로 5를 return합니다.
- 입출력 예 #2
- 음수가 없으므로 -1을 return합니다.
나의 풀이
먼저 findIndex()함수를 모르기도 했고, 기본적인 for문을 사용하지 않고, reduce()함수를 사용해보았습니다.
index를 새로운 배열에 넣기위해서 초기값을 빈 배열로 설정해주고, 정수 리스트 arr을 받아 reduce()함수를 사용하여 현재 값 value가 0보다 작은 음수일 경우에 누적값 acc배열에 push를 해주었습니다.
answer = nn[0] > 0 ? nn[0] : -1;
처음에는 7번 째 줄에서 위와같이 0보다 큰경우로 조건을 설정해주었는데 케이스 4, 13이 오류가 발생하여 원인을 확인해 본 결과 [-1,2,3,4,5] 와 같은 배열이 있을 때 0번 째 배열이 음수이면 7번째 줄에서의 반환값은 0보다 크지 않으므로 -1 을 반환하게 됩니다. 따라서 0보다 크거나 같을 때로 부등호를 설정해주었습니다.
다른 풀이
■ 일반적인 for문 사용
마찬가지로 동일한 구조로 0부터 시작해서 정수 배열 리스트의 끝까지 반복 합니다. 만약 i번째 값이 음수이면 해당 index를 반환해주고, 아니라면 -1을 반환하는 for문을 아주 기본적인 문제입니다.
■ findIndex() 사용
findIndex() 함수를 사용하여 해당 배열에서 0보다 작은 즉 음수를 만족하는 요소의 Index를 반환받습니다.
■ filter() 사용
filter() 함수는 특정 조건을 만족하는 새로운 배열을 반환하는 메서드입니다. 양수인 값만 true이기 때문에 해당 값을 nn이라는 새로운 배열에 할당해줍니다. 그러면 입출력 예 # 1 의 idx값은 -2이고, #2의 idx값은 undefined입니다. 이 값을 indexOf() 함수를 사용하여 주어진 num_list에서 idx의 값과 동일한 값을 찾아 반환 합니다. 이때 indexOf()의 특성에 따라서 찾는 값이 없으면 -1을 반환합니다.
'Coding Test > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Lv0 부분 문자열 이어 붙여 문자열 만들기 (JavaScript) (0) | 2024.01.20 |
---|---|
[프로그래머스] 공백으로 구분하기 2 (JavaScript) (0) | 2024.01.20 |
[프로그래머스] 순서 바꾸기 (JavaScript) (0) | 2024.01.15 |
[프로그래머스] Lv0 배열 비교하기 (JavaScript) (1) | 2024.01.15 |
[프로그래머스] Lv0 원소들의 곱과 합(JavaScript) (0) | 2024.01.13 |