코딩 테스트 준비

로또의 최고 순위와 최저 순위 level 1

개발쉐발 2022. 10. 6. 14:56
728x90
반응형

문제 설명

https://school.programmers.co.kr/learn/courses/30/lessons/77484#fn1

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

내 풀이

function solution(lottos, win_nums) {
    var answer = [];
    var num = [];
    var len = 6;
    var temp = 0;
    var zero = 0;
    
    num = lottos.filter(x => !win_nums.includes(x));
    temp = len - num.length;
    
    for(var i = 0; num.length > i; i++){
        if(num[i] === 0) zero += 1;
    }
     
    zero = temp + zero;
    
    if(zero === 6) answer.push(1);
    if(zero === 5) answer.push(2);
    if(zero === 4) answer.push(3);
    if(zero === 3) answer.push(4);
    if(zero === 2) answer.push(5);
    if(zero <= 1) answer.push(6);
    
    if(temp === 6) answer.push(1);
    if(temp === 5) answer.push(2);
    if(temp === 4) answer.push(3);
    if(temp === 3) answer.push(4);
    if(temp === 2) answer.push(5);
    if(temp <= 1) answer.push(6);
   
    
    return answer;
}

문제를 맞추기는 했지만 코드가 쓸데없이 길고, 초반에 코드를 짤때 생각을 잘 못했다. 그래서 다른 사람의 풀이를 보면서 효율적인 코드를 공부하기로 했다.

 

다른 사람 풀이

function solution(lottos, win_nums) {
    const rank = [6, 6, 5, 4, 3, 2, 1];

    let minCount = lottos.filter(v => win_nums.includes(v)).length;
    let zeroCount = lottos.filter(v => !v).length;

    const maxCount = minCount + zeroCount;

    return [rank[maxCount], rank[minCount]];
}

감탄이 절로 나온다. 특히 배열을 통한 반복문을 벗어난 것은 꼭 배울만한 요소다.

 

filter 함수는 혁명이다 배워두자 꼭!

 

Filter 함수

  • arr.filter(callback(element[, index[, array]])[, thisArg])
  • callback : 각 요소에 대한 조건값
  • element : 처리할 현재 요소
  • index : 현재 인덱스
  • array : filter를 호출한 배열
  • thisArg : callback을 생행 할 때 this로 사용하는 값

 

사용방법 3가지 예시

list.filter(function(word){

  return word.length >= 6 ;

})

 

list.filter(word => word.length >= 6);

 

function filterCallbackFunction(word){

       return word.length >= 6;

};

list.filter(filterCallbackFunction);

 

위와 같은 인자 값을 받는데 보통 아래와 같은 형태로 많이 쓴다. ( =>는 지원이 안 되는 브라우저도 있어서 function(){}을 사용하는 게 좋다.)

 

 

https://programmer93.tistory.com/65

 

javascript filter 사용법 - 삽질중인 개발자

- JAVASCRIPT filter 사용법 - 자바스크립트의 filter 메서드는 조건을 주고 해당 조건이 참인 요소를 모아 새로운 배열로 반환하는 메서드이다. 배열에서 원하는 데이터만 추출 하고 싶을 때 자주 사용

programmer93.tistory.com

 

728x90
반응형