📖 Problem Solution/Programmers
[Swift] 프로그래머스 위클리 챌린지 2주차 상호 평가
Fomagran 💻
2021. 8. 10. 15:00
728x90
반응형

Problem
코딩테스트 연습 - 2주차
[[100,90,98,88,65],[50,45,99,85,77],[47,88,95,80,67],[61,57,100,80,65],[24,90,94,75,65]] "FBABD" [[70,49,90],[68,50,38],[73,31,100]] "CFD"
programmers.co.kr
Solution
1.scores의 점수를 세로로 묶어준다.
scores 중 i번째 학생의 점수들은 i번째 이므로 세로로 묶어서 저장합니다.
var selfScore = scores.map{$0[i]}
2. 세로로 묶은 점수들 중 i번째(자기 자신)가 최고 또는 최소라면 maxOrMin으로 저장하고 삭제해줍니다.
var maxOrMin = -1
if selfScore[i] == selfScore.max() ?? 0 || selfScore[i] == selfScore.min() ?? 0 {
maxOrMin = selfScore.remove(at: i)
}
3. maxOrMin이 유일한 값인지 확인하고 유일하지 않다면 다시 넣어준다.
if maxOrMin != -1 {
for s in selfScore {
if s == maxOrMin {
selfScore.append(s)
break
}
}
}
4. 평균을 계산해 학점을 구하고 result에 넣어준다.
let average = selfScore.reduce(0) {$0 + $1}/selfScore.count
result.append(getGrade(score:average))
func getGrade(score:Int) -> String {
switch score {
case 90...100:
return "A"
case 80..<90:
return "B"
case 70..<80:
return "C"
case 50..<70:
return "D"
default:
return "F"
}
}
5. result를 모두 연결해 반환한다.
return result.joined()
Source Code
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Foundation | |
func solution(_ scores:[[Int]]) -> String { | |
var result = [String]() | |
for i in 0..<scores.count { | |
var selfScore = scores.map{$0[i]} | |
var maxOrMin = -1 | |
if selfScore[i] == selfScore.max() ?? 0 || selfScore[i] == selfScore.min() ?? 0 { | |
maxOrMin = selfScore.remove(at: i) | |
} | |
if maxOrMin != -1 { | |
for s in selfScore { | |
if s == maxOrMin { | |
selfScore.append(s) | |
break | |
} | |
} | |
} | |
let average = selfScore.reduce(0) {$0 + $1}/selfScore.count | |
result.append(getGrade(score:average)) | |
} | |
return result.joined() | |
} | |
func getGrade(score:Int) -> String { | |
switch score { | |
case 90...100: | |
return "A" | |
case 80..<90: | |
return "B" | |
case 70..<80: | |
return "C" | |
case 50..<70: | |
return "D" | |
default: | |
return "F" | |
} | |
} |
728x90
반응형