본문 바로가기
자기개발/TIL

배열에서 음수의 인덱스를 반환하란다

by 금화맘 2023. 7. 4.

오늘도 프로그래머스를 풀었다.

배열에 약한거 같아 배열문제를 찾아서 풀어봤다.

 

문제는

길이가 5이상인 배열을 줄꺼고 거기서 음수의 인덱스를 반환하라는 거였다.
일단 음수를 정의하는 것 부터 또 헤맸다. 이놈의 숫자 숫자 숫자.

처음에 한 생각은 배열이 num_list라고 하면 

num_list.find((v)=>v===-1*v)로 하면 음수를 찾을 수 있을 거 같았다.

근데 undefind가 나왔다.

아놔... find 메서드를 잘 못썻다고 생각하진 않았으니까 당연히 괄호안의 조건이 잘못된거라 생각하고 js에서 음수표현을 검색했다.

역시... 표기가 잘못된거였다.

a<0 0보다 작을 것. 맞아 그게 음수였지..

다시 수식을 작성해봤다.

배열.find를 써서 음수인 것을 찾고, indexOf를 써서 인덱스를 반환하면 되겠다 라고 생각했다.

그래서 

배열.find((v)=> v<0).indexOf(v)를 했는데 indexOf이 움직이지 않았다.

indexOf(v)에서 v는 정해지지 않았다고 한다.

 

num_list.find((v)=> v <0) ? num_list.indexOf((v)=>v<0) : -1;

라고 해도 v가 정해지지 않았다고 했다.

설마 find를 잘못썻나란 생각에 find 검색하니 findIndex가 나왔다. 바꿔서 작성해 봤다.

num_list.findIndex((v)=> v <0 )

잘 되네??

find와 findIndex 자첵 없으면 -1을 반환하는 성질을 가지고 있었다.

세상에 좋아라. 그럼 괜히 삼항연산 쓸 필요도 없네.

그래도 내가 처음 만들었던 식도 작동하는지 궁금해서 만들어 봤다.

var answer = num_list.find((v)=> v <0) ? num_list.findIndex((v)=>v<0) : -1;

 

작동 잘됌 굿굿

 

아주 맘에 들었다.

for문을 쓰지 않고 만들수 있어서 더더욱 좋았다.