개발/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 }
}
반응형