Lv 1. 로또의 최고 순위와 최저 순위

박하린·2021년 6월 1일
0

프로그래머스

목록 보기
13/42

📚 문제

로또의 최고 순위와 최저 순위
https://programmers.co.kr/learn/courses/30/lessons/77484

💡 접근

맞힐 수 있는 가장 최저 개수는 lotto 배열과 win_nums의 일치하는 배열의 요소의 수를 구하고,

최고 개수는 최저 개수에서 구한 요소의 수에 배열에서 0의 요소의 수를 더하면 가능한 가장 높은 개수를 구할 수 있다. 0이 뭔지는 알 수 없기 때문에 0이 모두 다 win_nums와 일치하는 요소 중의 하나라고 가정한다면 맞힐 수 있는 가장 최고 개수이기 때문이다.

⌨️ 코드

function solution(lottos, win_nums){
    const rankingObj = {6:1, 5:2, 4:3, 3:4, 2:5, 1:6, 0:6}
    let lowest = lottos.filter(v => win_nums.includes(v)).length // 두배열에서 일치하는 요소들의 개수 구하기
    let top = lowest + lottos.filter(v => v === 0).length
    return [rankingObj[top], rankingObj[lowest]]
}

✅ 메소드 정리

Array.includes()

  • 배열이 특정 요소를 포함하고 있는지 판별한다.

  • syntax

arr.includes(valueToFind[, fromIndex])
  • 매개변수
    • valueToFind : 탐색할 요소
    • fromIndex : 검색을 시작할 위치를 지정할 수 있다. 기본값은 0
  • 반환 값 : Boolean
    [1, 2, 3].includes(2);     // true
    [1, 2, 3].includes(4);     // false
    [1, 2, 3].includes(3, 3);  // false
    [1, 2, 3].includes(3, -1); // true
    [1, 2, NaN].includes(NaN); // true

📝 리뷰

문제에서 숫자를 맞힌 개수에 따라 정의한 랭킹을 {맞은 개수 : 랭킹} 으로 객체를 선언해주고 끝에서 객체의 value 값을 반환해주도록 풀었는데,
다른 사람의 풀이에서 [6,6,5,4,3,2,1] 과 같이 배열로 선언하고 인덱스를 반환해주는 간단한 방법도 있다는 걸 알게되었다.
똑똑한 사람들 정말 많은것 같다 ㅋ

profile
깃허브: https://github.com/khakaa

0개의 댓글

관련 채용 정보