개발/PS
[Swift] 프로그래머스 Lv1 모의고사
유훈 | Yuhun
2022. 2. 19. 04:51
반응형
스위프트로 푼 첫 문제입니다.
여기서 알게된 중요한 사실은 스위프트의 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 }
}
반응형