728x90
반응형
Problem
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
728x90
반응형
'📖 Problem Solution > Programmers' 카테고리의 다른 글
[Swift] 프로그래머스 위클리 챌린지 3주차 퍼즐 조각 채우기 (0) | 2021.08.20 |
---|---|
[Swift] 2020 KAKAO BLIND RECRUITMENT 기둥과 보 설치하기 (0) | 2021.08.13 |
[Swift] 2021 KAKAO INTERNSHIP 거리두기 확인하기 (0) | 2021.08.07 |
[Swift] 프로그래머스 위클리 챌린지 1주차 부족한 금액 계산하기 (0) | 2021.08.07 |
[Swift] 2018 KAKAO BLIND RECRUITMENT [1차] 셔틀버스 (0) | 2021.08.06 |
댓글