본문 바로가기

개발/알고리즘

[프로그래머스] 완전탐색 - 모의고사

반응형
 

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

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

programmers.co.kr

 

입력 & 출력

1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때,
가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작성해주세요.

풀이

정해진 패턴이 있으니 이를 먼저 선언하자
패턴에 맞게 수를 넣은 후 문제를 맞힐 경우 각자 점수를 더한다

2중 for문 보다 하나의 for문 효율이 좋으니
하나의 for문 안에 각 3가지 경우를 대입해서 푼다

 

Swift 전체 코드

let one = [1,2,3,4,5]
let two = [2,1,2,3,2,4,2,5]
let three = [3,3,1,1,2,2,4,4,5,5]

func solution(_ answers:[Int]) -> [Int] {
    var array = Array(repeating: 0, count : 3)
    var value = [Int]()
    
    for i in 0..<answers.count {
        if answers[i] == one[i % one.count] { array[0] += 1 }
        if answers[i] == two[i % two.count] { array[1] += 1 }
        if answers[i] == three[i % three.count] { array[2] += 1 }
    }
    
    for i in 0..<array.count {
        if array[i] == array.max() {
            value.append(i+1)
        }
    }
    
    return value
}

 

반응형