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

Updated:

문제 설명

67

나의 풀이

import Foundation
func solution(_ lottos:[Int], _ win_nums:[Int]) -> [Int] {
    var rank = [6:1, 5:2, 4:3, 3:4, 2:5, 1:6, 0:6]
    var lottosCopy = lottos
    lottosCopy.sort()
    var win_numsCopy = win_nums
    win_numsCopy.sort()
    
    var count = 0
    var zeroCount = 0
    for num in lottosCopy {
        if num == 0 {
            zeroCount += 1
        }
        if win_numsCopy.contains(num) {
            count += 1
        }
    }
    
    var maxCount = zeroCount + count
    var minCount = count
    var answer = [rank[maxCount]!, rank[minCount]!]
    
    return answer
}

괜찮은 남의 풀의

import Foundation
func solution(_ lottos:[Int], _ win_nums:[Int]) -> [Int] {
    let zeroCount = lottos.filter { $0 == 0}.count
    let winCount: Int = win_nums.filter { lottos.contains($0) }.count


    return [min(7-winCount-zeroCount,6), min(7-winCount,6)]
}

filter를 좀 더 사용해보도록 노력해보자..

참고

Programmers

Leave a comment