반응형
스위프트로 푼 첫 문제입니다.
여기서 알게된 중요한 사실은 스위프트의 Dictionary는 순서를 보장하지 않는다는 것입니다.
따라서 Dictionary의 순서가 필요하다면 정렬해서 사용해야 합니다.
import Foundation
func solution(_ answers:[Int]) -> [Int] {
let first: [Int] = [1,2,3,4,5]
let second: [Int] = [2,1,2,3,2,4,2,5]
let third: [Int] = [3,3,1,1,2,2,4,4,5,5]
var right: [Int: Int] = [1: 0, 2: 0, 3: 0]
var rank: [Int] = [] print(right)
for i in 0..<answers.count {
if first.count-1 > i && first[i] == answers[i] {
right[1]! += 1
} else if first[i % first.count] == answers[i] {
right[1]! += 1 }
if second.count-1 > i && second[i] == answers[i] {
right[2]! += 1
} else if second[i % second.count] == answers[i] {
right[2]! += 1 }
if third.count-1 > i && third[i] == answers[i] {
right[3]! += 1
} else if third[i % third.count] == answers[i] {
right[3]! += 1
}
}
// 딕셔너리를 value 값으로 정렬
let sortedRight = right.sorted{ $0.1 > $1.1 }.sorted{$0.0 < $1.0}
rank.append(sortedRight[0].key)
for i in 1..<sortedRight.count {
if sortedRight.first?.value == sortedRight[i].value {
rank.append(sortedRight[i].key)
} else { break }
}
rank.sort() // 동일 차순 랭킹에서 오름차순 정렬 return rank }
}
반응형
'개발 > PS' 카테고리의 다른 글
[Swift] 프로그래머스 Lv2 순위검색 (0) | 2022.03.28 |
---|---|
[Swift] 프로그래머스 LV1 비밀지도 (0) | 2022.03.12 |
[Python] 프로그래머스 Lv1 신고 결과 받기 (0) | 2022.01.23 |
[Python] 프로그래머스 Lv2 기능개발 (0) | 2022.01.03 |
[Python] 프로그래머스 Lv1 완료하지 못한 선수 (0) | 2022.01.03 |