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을 리턴하게 됩니다.
감사합니다. 파이팅 ...!
반응형
'Web, View > 코딩테스트 연습' 카테고리의 다른 글
[JavaScript] 문자열의 뒤의 n글자 - 181910 (0) | 2023.12.13 |
---|---|
[JavaScript] 글자 이어 붙여 문자열 만들기 - 181915 (0) | 2023.12.12 |
[JavaScript] 카운트 업 - 181920 (0) | 2023.12.11 |
[JavaScript] 마지막 두 원소 - 181927 (1) | 2023.12.07 |
[JavaScript] 원소들의 곱과 합 - 181929 (1) | 2023.12.07 |