[프로그래머스-기초] 첫 번째로 나오는 음수

JE·2023년 5월 12일
0

코테/코플릿

목록 보기
8/57
post-thumbnail

첫 번째로 나오는 음수

문제 설명

정수 리스트 num_list가 주어질 때, 첫 번째로 나오는 음수의 인덱스를 return하도록 solution 함수를 완성해주세요. 음수가 없다면 -1을 return합니다.

제한사항

5 ≤ num_list의 길이 ≤ 100
-10 ≤ num_list의 원소 ≤ 100

입출력 예

num_listresult
[12, 4, 15, 46, 38, -2, 15]5
[13, 22, 53, 24, 15, 6]-1

입출력 예 설명

입출력 예 #1
5번 인덱스에서 음수가 처음 등장하므로 5를 return합니다.
입출력 예 #2
음수가 없으므로 -1을 return합니다.

💻 내가 작성한 코드

function solution(num_list) {
    let result = 0;
    for(let i = 0; i < num_list.length; i++){
        if(num_list[i] < 0){
            result = i
            break
        }
        result = -1
    }
    return result
}

❓ 막혔던 부분

function solution(num_list) {
    let result = 0;
    for(let i = 0; i < num_list.length; i++){
        if(num_list[i] < 0){
            result = i
        }
        result = -1
    }
    return result
}

초반엔 break를 빼고 작성했다.
분명 조건도 잘 맞게 작성했고 분명 맞다 생각했는데
테스트 돌리면 음수 결과 값을 반환하지 않았다.

반대로 할 경우 무한 로딩이 걸렸다.
왜 안 되지 고민했을 때 음수가 처음 등장한걸 출력해야하는데
다른 음수도 걸러내느라 그런게 아닌가 싶다.

그렇게 알아보다
break를 작성해 주면 된다는 사실을 알게 되었다.

break는 알고 있었지만 어떠한 상황에 사용해야하는지 헷갈렸는데 오늘 같은 상황이 발생 했을 때 사용하면 될 것 같다.

break는 현재 반복문을 종료하는 것이다.
만약 조건문을 작성하고 조건문이 완료 되었을 때 해당 반복문을 종료한다.

이 문제의 초점은 처음 등장하는 음수를 반환하라는게 아닐까 싶다.

💻 다른 사람이 작성한 코드

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

findIndex 메서드를 이용해 작성하셨다.
findIndex는 만족하는 값을 찾지 못 했을 때 -1를 반환하는데 이 점을 이용하신거 같다.
이 부분에 한 수 배워간다..

function solution(num_list) {
    let result = -1;

    for(let i = 0; i < num_list.length; i++) {
        if(num_list[i] < 0) {
            result = num_list.indexOf(num_list[i]);
            break;
        }
    }
    return result;
}

이분은 내가 작성한 것과 비슷하지만 indexOF를 이용해 해당 인덱스 값을 반환하셨다.
indexOF 또한 만족하는 값이 없을 경우 -1를 반환한다.


✏️ 마치며

하나의 코드에 이렇게 다양한 방법이 나올 수 있는 점에서 놀랍고 신기하다.
또한 어느 정도 실력이 달성하면 여러개의 코드를 1~2 줄로 끝낼 수 있는지도 궁금하기도 하고
감탄이 절로 나온다.

profile
[프론트 애송이] 작은 깨달음도 기록하기

0개의 댓글