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

Kerri·2021년 5월 22일
0

코테

목록 보기
50/67

안녕하세요 !

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

풀이

filter 메소드로 0이 몇번 있는지 zeroCnt를 구했습니다.
그 다음 lottos와 win_nums의 합집합을 구해서 중복되는 숫자가 몇개인지 same을 구해준다음
same과 zeroCnt를 이용해 최고순위와 최저순위를 구했습니다.

주의할점은 0이 하나도 없고 중복되는 숫자도 아예없는 경우를 처리해줘야 한다는 것입니다.
그래서 same이 0이라면 바로 [6, 6]으로 return 해주었습니다.

import Foundation

func solution(_ lottos:[Int], _ win_nums:[Int]) -> [Int] {
    let zeroCnt = lottos.filter({ $0 == 0 }).count
    
    let set1 = Set(lottos)
    let set2 = Set(win_nums)
    
    var same = 12 - set1.union(set2).count 
    if same == 0 {
        return [6, 6]
    }
    if zeroCnt > 0 {
        same -= (zeroCnt - 1)
    }
    
    var min = 7 - same
    if min >= 6 {
        min = 6
    }
    
    return [7 - (same + zeroCnt), min]
}
profile
안녕하세요 !

0개의 댓글