[Js] 배열 탐색하기 및 프로그래머스 문제풀이(실패율)

김효인·2021년 9월 2일
0
post-thumbnail

프로그래머스 문제를 풀다가 배열 내에서 무언가를 찾고싶을때! 사용하는 메서드에 대해 정리하고자 글을 써봅니다 !

1. indexOf,lastIndexOf와 includes

ex) arr.indexOf, arr.lastIndexOf, includes
이는 하는일이 모두 같으나 대상이 문자열이 아닌 배열의 요소라는 점에서 다릅니다.

  • arr.indexOf(item,from) : 인덱스 from부터 시작해서 item 요소를 찾습니다. 요소를 발견하면 해당 요소의 인덱스를 반환하고 발견하지 못했으면 -1를 반환합니다 !
  • arr.laseIndexOf(item,from) : 위 메서드와 동일한 기능을 하나, 검색을 끝에서 부터 시작한다는 점에서 다릅니다 !
  • arr.includes(item,from) : 인덱스 from부터 시작해 item이 있는지 검색하는데 이는 해당 요소를 발견하면 true를 반환합니다!

2. find와 findIndex

객체로 이루어진 배열이 있다고 가정해보았을때, 특정 조건에 부합하는 객체를 배열내에서 찾을때 arr.find(fn)을 사용할 수 있습니다.

let users = [
  {id: 1, name: "John"},
  {id: 2, name: "Pete"},
  {id: 3, name: "Mary"}
];

let user = users.find(item => item.id == 1);

alert(user.name); // John

3. filter

find 메서드는 함수의 반환값을 true로 만드는 단 하나의 요소를 찾습니다. 조건을 충족하는 요소가 여러개라면 arr.filter(fn)을 사용하면 됩니다.

프로그래머스 실패율 문제풀이

2019 카카오 블라인드 리크루팅 문제이지만 Lv1문제에 해당 메서드를 사용하여 쉽게 풀수있어 가져와보았습니다. 자세한건 프로그래머스 사이트에서 문제 확인해보세요 !

  1. 해당 stages에 실패한 사람은 제외해야 하기때문에 person으로 정의
  2. for문을 통해 반복문 돌려주기
  3. filter를 사용하여 조건을 충족하는 요소의 length가져오기
  4. answer.push를 통해 해당 stage번호와 실패율을 배열을 통해 가져오기
  5. answer.sort를 통해 내림차순 정렬해주기 (1번째 인덱스 값으로 내림차순을 진행해주기 위해 b[1]-a[1] )
  6. 그러나 우리가 필요한 return값은 0번째 인덱스에 들어가있는 stage번호이기 때문에 answer.map을 통해 0번째 인덱스값만 return해주기!
function solution(N, stages) {
    var answer = [];
    let person = stages.length;
        for(let j=1;j<=N;j++){
            let count = stages.filter(N=>N===j).length;
            answer.push([j,count/person]);
            person = person-count;
        }
    answer = answer.sort((a,b)=> b[1]-a[1]);
    return answer.map(a=>a[0]);
}
profile
내가 보려고 만든 velog

0개의 댓글

관련 채용 정보