프로그래머스 Weekly Challenge 2주차
1) Array(repeating: ,count:)를 이용해서 원하는 크기의 배열을 만들수 있다.
2) Dictionary(Array.map{ ($0, 1) }, uniquingKeysWith: + )를 이용하면 배열안에 해당값이 몇개인지 리턴하는 Dictionary를 얻을 수 있다.
func solution(_ scores:[[Int]]) -> String {
var matrix = Array(repeating:Array(repeating: 0, count: scores.count),count: scores.count)
var result: String = ""
for (i,score) in scores.enumerated() {
for j in 0..<score.count {
matrix[i][j] = scores[j][i]
}
}
for (i, score) in matrix.enumerated() {
print(matrix)
var sum = 0
var avg: Float = 0
if let max = score.max(), let min = score.min() {
if score[i] == max || score[i] == min { // 자기에게 준 점수가 max또는 min에 해당되면
let counts = Dictionary(score.map{ ($0, 1) }, uniquingKeysWith: + )
if counts[score[i]] ?? 0 >= 2 { // 같은수가 2개이상이면
sum = score.reduce(0, +)
avg = Float(sum)/Float(score.count)
} else { // 값 같은게 없으면
sum = score.reduce(0, +) - score[i]
avg = Float(sum)/Float(score.count - 1)
}
} else { // 해당 안되면
sum = score.reduce(0, +)
avg = Float(sum)/Float(score.count)
}
}
if avg >= 90 {
result.append("A")
} else if avg >= 80, avg < 90 {
result.append("B")
} else if avg >= 70, avg < 80 {
result.append("C")
} else if avg >= 50, avg < 70 {
result.append("D")
} else {
result.append("F")
}
}
return result
}
Author And Source
이 문제에 관하여(프로그래머스 Weekly Challenge 2주차), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@quokka/Weekly-Challeng-2주차저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)