Web, View/코딩테스트 연습

[JavaScript] 첫 번째로 나오는 음수 - 181896

kaleb 2023. 12. 15. 10:33
728x90

안녕하세요 미어캣입니다.

 

오늘은 프로그래머스 기초문제 첫 번 째로 나오는 음수 문제를 풀어보도록 하겠습니다.

 

문제 설명 :

정수 리스트 num_list가 주어질 때, 첫 번째로 나오는 음수의 인덱스를 return 하도록 하는 soulution 함수를 작성하시오,

음수가 없다면 -1 을 return 합니다.

 

제한 사항 :

  • 5<= num_list의 길이 <= 100
  • -10 <= num_list의 원소 <= 100

 

문제 :

function solution(num_list) {
    var answer = 0;
    return answer;
}

 

이번 문제는 리스트가 주어 질 때 인덱스에 어떻게 접근할 수 있는가 에 대한 문제 같습니다.

 

정답 : 

더보기

이번 문제 역시 다양한 풀이 방식이 존재합니다.

 

저는 크게 세 가지 방식으로 문제를 풀어 봤습니다.

 

  • for 문을 활용한 문제
const solution = (arr) => {

     for(let i = 0; i < arr.length; i++) {

         if(arr[i] < 0) //음수가 있을경우 인덱스 리턴
         return i;
     }
     return -1; // 없을 경우 -1리턴
}

 

for 문을 통해 조건에 만족할 경우 해당 인덱스를 그렇지 않는 경우 -1을 리턴하는 방식입니다.

 

  •  Array.findIndex 를 통한 문제
 const solution = (arr) => {

    /*
        findIndex 메서드는 주어진 함수의 조건을 만족하는
        배열 요소의 인덱스를 찾는데, 조건에 만족하는 요소가 없다면
        -1을 반환 합니다.
    */
     const idx = arr.findIndex(x => x < 0);
     return idx;
}

 

findIndex는 indexOf와 비슷한데 맞을 경우 해당 인덱스를 그리고 없을 경우 -1을 리턴하는 메서드인데

이를 활용하면 아주 간단하게 문제를 해결 할 수 있었습니다.

 

  • Array.filter 를 통한 문제
const solution = (arr) => {
  	
    /*
    filter로 찾은 값을 배열로 리턴하기 때문에 배열의 첫번째값을 리턴, 
    indexOf를 통해 값이 없을 경우 -1 을 리턴
    */
    
    let newArr = arr.filter((c) => { 
        
        if(c < 0) {
            return c
        }
    })
    return arr.indexOf(newArr[0]); 
}

 

filter는  조건에 만족하는 인덱스 값을 배열로 리턴하게 됩니다.

이때 첫 번째로 나오는 음수를 구하기 때문에 해당 배열의 0번째,

첫번째 값을 indexOf를 통해서 있을경우 해당 인덱스를, 그렇지 않는 경우 -1을 리턴하게 됩니다.

 

감사합니다. 파이팅 ...!

반응형