[Algorithm] 프로그래머스 상호 평가

Updated:

문제 설명

1213

나의 풀이

import Foundation
func solution(_ scores:[[Int]]) -> String {
    var answer: String = ""

    for i in 0..<scores.count {
        var score: [Int] = []
        let selfAssessment = scores[i][i]
        for j in 0..<scores.count {
            score.append(scores[j][i])
        }
        var total = score.reduce(0) { $0 + $1 }
        let sortedScores = score.sorted()
        let len = sortedScores.count
        var average: Double = 0
        
        if selfAssessment < sortedScores[1] {
            total -= selfAssessment
            average = Double(total) / Double(len - 1)
        }
        else if selfAssessment > sortedScores[len-2] {
            total -= selfAssessment
            average = Double(total) / Double(len - 1)
        }
        else {
            average = Double(total) / Double(len)
        }
        
        let grade = changeToGrade(score: average)
        answer += grade
    }
    return answer
}

func changeToGrade(score: Double) -> String {
    if score >= 90 {
        return "A"
    }
    else if score >= 80 && score < 90 {
        return "B"
    }
    else if score >= 70 && score < 80 {
        return "C"
    }
    else if score >= 50 && score < 70 {
        return "D"
    }
    else {
        return "F"
    }
}

고민한 점

유일한 최소, 최대를 찾는 방법을 고민했었는데 정렬하고 두 번째와 마지막에서 두 번째 원소와의 비교를 통해서 쉽게 찾아낼 수 있었다.

참고

Programmers

Leave a comment