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 |