본문 바로가기
알고리즘

[Swift] 프로그래머스 - 로또의 최고 순위와 최저 순위

by 고고 2022. 2. 10.

문제: https://programmers.co.kr/learn/courses/30/lessons/77484

 

코딩테스트 연습 - 로또의 최고 순위와 최저 순위

로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호

programmers.co.kr

 

min(6, ~) 이 부분을 깜빡해서 15분정도 더 걸렸네요. 풀이에 약 30분 걸렸습니다.

import Foundation

func solution(_ lottos:[Int], _ win_nums:[Int]) -> [Int] {
    // 일치하는 숫자들
    let correct = lottos.filter { win_nums.contains($0) }.count
    let zeroCount = lottos.filter { $0 == 0 }.count
    
    // 최고 순위 : 0이 전부 맞는 것
    let high = min(6, 7 - (correct + zeroCount))
    // 최저 순위 : 0이 전부 틀리는 것
    let low = min(6, 7 - correct)
    
    return [high, low]
}

solution([44, 1, 0, 0, 31, 25], [31, 10, 45, 1, 6, 19]) // [3, 5]
solution([0, 0, 0, 0, 0, 0], [38, 19, 20, 40, 15, 25]) // [1, 6]
solution([45, 4, 35, 20, 3, 9], [20, 9, 3, 45, 4, 35]) // [1, 1]
solution([0, 0, 0, 0, 0, 1], [20, 9, 3, 45, 4, 35]) // [2, 6]
solution([0, 20, 9, 3, 45, 1], [20, 9, 3, 45, 4, 35]) // [2, 3]
solution([1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12]) // [6, 6]

댓글