A.P - 로또의 최고 순위와 최저 순위 (프로그래머스, L1)

EBinY·2022년 6월 28일
0

AP - Algorithm Problem

목록 보기
42/55
  1. 문제
  • 1/45의 숫자 중 6개를 구입, 낙서되어 볼 수 없는 숫자는 0으로 대체, 예상할 수 있는 최고 등수와 최저 등수를 예측하여 리턴하자
  • 요소 : 구매한 번호, 당첨 번호
  • 조건 : 6개 숫자를 맞추면 1등, 5개는 2등...1개 또는 0개는 6등 (실제 로또와 다름)
  1. 수도코드
결과와 동일함
  1. 결과
function solution(lottos, win_nums) {
    // 정답 제한은 1-45, 정렬 x, 6개 1등 - 0개 6등
    // 0의 갯수에 따라 예상 순위의 범위가 정해짐
    // 0을 제외한 숫자들을 정답과 비교, 일치하는 수를 저장
    // 0의 갯수를 저장, 0의 갯수와 일치하는 수를 합쳐 최대 등수를 계산, 응답배열에 푸쉬
    // 일치하는 수만을 가지고 최저 등수를 계산, 응답배열에 푸쉬
    
    // 0 카운트
    let zero_cnt = 0;
    // 정답 일치 숫자 카운트
    let hit_cnt = 0;
    
    // 0의 수를 먼저 구한다
    for (let i = 0; i < 6; i++) {
        if (lottos[i] === 0) {
            zero_cnt++;
        }
        else if (win_nums.includes(lottos[i])) {
            hit_cnt++;
        }
    }
    let min = 7 - hit_cnt >= 6 ? 6 : 7 - hit_cnt;
    let max = min - zero_cnt <= 1 ? 1 : min - zero_cnt;
    var answer = [max, min];
    return answer;
}
  1. 레퍼런스
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의 활용법을 공부하자

0개의 댓글

관련 채용 정보