프로그래머스 문제 링크
문제 풀이 생각 회로
- list를 순회하면서 가장 먼저 음수가 나오는 순간 인덱스를 반환한다.
- 리스트가 끝나도 리턴되지 않으면 -1을 반환한다.
고민했던 내용
- list 이니 map 을 사용해서 반복문을 돌면서 음수를 확인해야겠다고 생각함.
- 여러가지 시도했지만 map은 반환하는 것이 있기 때문에 해당 인덱스만 반환되지 않고 각각의 원소에 대한 값들이 반환되었음
- ex) [12, 4, 15, 46, -2] 을 map 을 순회하며 리턴하면 반환되는 list 는 [-1, -1, -1, -1, 4] 로 구할 수 있으나 다시 순회를 하며 -1 이 아닌 것을 찾아야 해서 다른 방식을 사용하기로 생각함.
- 내가 찾던 것은 map 이 아니라 filter 였던 것을 알아냄.
- 하지만 filter 도 조건식이 n 개 일치하면 n 개의 원소를 가진 배열을 반환함.
- ex) [2, 4, -2, -4, 3] => [2, 3]
- filter 로 문제를 해결하면 0번째 인덱스를 반환하여야 함.
- 번외로 findIndex라는 메서드를 많이 사용하는 것 같음.
- num_list.findIndex(x => x < 0)
- 해당 함수는 조건에 가장 먼저 부합하는 하나를 리턴함.
- 조건식이 없을 경우 -1 을 반환함.
제출 코드
function solution(num_list) {
for (num in num_list) {
if (num_list[num] < 0) return Number(num)
}
return -1
}