문제 풀이/Javascript

[Programmers] 로또의 최고 순위와 최저 순위

일 월 2022. 9. 2. 22:38

코딩테스트 연습 - 로또의 최고 순위와 최저 순위 | 프로그래머스 스쿨 (programmers.co.kr)

문제

로또 번호 중 몇 개 번호를 알아볼 수 없을 때, (그 번호는 0으로 표시) 이 번호로 가능한 최고 순위와 최저 순위 구하기

 

로또 순위표

 

순위 조건
1 6개 번호가 모두 일치
2 5개 번호가 일치
3 4개 번호가 일치
4 3개 번호가 일치
5 2개 번호가 일치
6(낙첨) 그 외

 

예제

lottos = [44, 1, 0, 0, 31, 25], win_nums = [31, 10, 45, 1, 6, 19] 이면,

최저 순위는 5 (2개 번호 일치), 최고 순위는 3 (4개 번호 일치)

 


풀이

function solution(lottos, win_nums) {
	// win_nums에 포함된 lottos의 숫자 개수
    let exists = 0
    // lottos에서 0의 개수
    let zero = 0
    
    // check라는 빈 배열 생성 후, win_nums의 요소가 존재하는지 여부 표시
    const check = new Array(46)
    win_nums.forEach((number) => {
        check[number] = 1
    })
    
    // zero와 exists 값 채워주기
    lottos.forEach((number) => {
        if (number === 0) {
            zero += 1
        } else if (check[number] === 1) {
            exists += 1
        }
    })
    
    // 최고 순위와 최저 순위 정의
    let lowRank = 7 - exists
    let highRank = lowRank - zero
    
    if (exists === 0) {
        lowRank -= 1
        if (zero === 0) {
            highRank -= 1   
        }
    }
    return [highRank, lowRank]
}

'문제 풀이 > Javascript' 카테고리의 다른 글

[Programmers] [Javascript] 성격 유형 검사하기  (0) 2022.09.14