[Algorithm] 프로그래머스 상호 평가
Updated:
문제 설명
나의 풀이
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"
}
}
고민한 점
유일한 최소, 최대를 찾는 방법을 고민했었는데 정렬하고 두 번째와 마지막에서 두 번째 원소와의 비교를 통해서 쉽게 찾아낼 수 있었다.
Leave a comment