Archive/Questions

[programmers/Swift] 모의고사

Marco 2022. 5. 10. 19:22
728x90

programmers.co.kr - 코딩테스트연습 - Lv.1 - 완전탐색 - 모의고사

 

코딩테스트 연습 - 모의고사

수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는

programmers.co.kr

Constraints :

  • 시험은 최대 10,000 문제로 구성되어있습니다.
  • 문제의 정답은 1, 2, 3, 4, 5중 하나입니다.
  • 가장 높은 점수를 받은 사람이 여럿일 경우, return하는 값을 오름차순 정렬해주세요.

 

Solution.swift :

//
//  Created by Yongwoo Marco on 2022/05/08.
//  Copyright © 2022 Yongwoo Marco Kim. All rights reserved.
//

func solution(_ answers:[Int]) -> [Int] {
    var students = [1:0, 2:0, 3:0]
    let first = [1, 2, 3, 4, 5]
    let second = [2, 1, 2, 3, 2, 4, 2, 5]
    let third = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
    
    answers.enumerated().forEach { (index, element) in
        if( element == first[ index % 5])  { students[1]! += 1 }
        if( element == second[index % 8])  { students[2]! += 1 }
        if( element == third[ index % 10]) { students[3]! += 1 }
    }
        
    let max = students.values.max()!
    return students.filter { $0.value == max }.sorted(by: <).map { $0.key }
}

print(solution([1,2,3,4,5])) // [1]
print(solution([1,3,2,4,2])) // [1,2,3]

How I tried this :
완전탐색이다 보니 문제를 한번만 돌도록 고민했음

인덱스를 이용해서 3명을 동시에 접근하는 방식으로 구현

문제에 관한 모든 저작권 : https://programmers.co.kr/

728x90