본문 바로가기

ALGORITHM

[Swift] Lv1.로또의 최고 순위와 최저 순위 (dictionary 사용)

Dictionary를 복습한겸 굳이 Dictionary를 사용하지 않아도 되지만 복습겸 사용하였습니다.

랭킹을 6개 맞추면 1위, 1개 맞추면 0위, 0개 맞추면 6위로 순위를 찾을 수 있도록 ranking을 Dictionary로 선언하였습니다.

ranking 값을 접근할 때 그냥 접근하면 optional 타입으로 반환되기 때문에

여기서는 값이 있을 것이라 확신하고 강제추출 하였습니다.

 

[풀이]

0값을 세어서
최고 순위는 맞은 갯수 + 0값

최저 순위는 맞은 갯수

 

https://programmers.co.kr/learn/courses/30/lessons/77484?language=swift

 

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

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

programmers.co.kr

 

import Foundation

func solution(_ lottos:[Int], _ win_nums:[Int]) -> [Int] {
    var correctCount: Int = 0
    var zeroCount: Int = 0
    var result: [Int] = []
    let ranking: Dictionary<Int, Int> = [6 : 1, 5 : 2, 4 : 3, 3 : 4, 2 : 5, 1 : 6, 0 : 6]
    
    for lotto in lottos {
        if lotto == 0 {
            zeroCount += 1
        }
        else if win_nums.contains(lotto) {
            correctCount += 1
        }
    }
    
    result.append(ranking[correctCount + zeroCount]!)
    result.append(ranking[correctCount]!)
    return result
}

 

다른 사람의 풀이를 보니 간단하게 잘 짠 코드가 있어 추가해봅니다.

let zeroCount = lottos.filter{ $0 == 0 }.count
let winCount = win_nums.filter{ lottos.contatins($0) }.count

'ALGORITHM' 카테고리의 다른 글

[Swift] Lv2.위장 (Dictionary)  (0) 2022.03.09
[Swift] 17780 새로운 게임 (구현)  (0) 2022.03.01
[swift] 알고리즘 풀기 전 준비  (0) 2021.08.10
[공부] 바킹독의 실전 알고리즘 (ing)  (0) 2021.05.19
[c++] 체육복 (Greedy)  (0) 2021.05.14