-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
💬 문제
https://school.programmers.co.kr/learn/courses/30/lessons/152995
💬 Idea
- 점수 배열 scores를 근무 태도 점수는 내림차순으로, 근무 태도 점수가 같다면 동료 평가 점수는 오름차순으로 정렬시킨다.
- 완호의 점수가 다른 사원들의 두 점수와 비교하여 모두 낮은 경우가 있다면 바로 -1을 리턴하여 완호가 인센티브를 받을 수 없음을 리턴한다.
근무 태도 점수는내림차순으로 내려가므로 만일 임의의 사원의 동료 점수가 max값보다 작다면 두 점수 모두 낮다는 것을 의미하므로- 만일 임의의 사원의 동료 점수가 max값보다 작다면 두 점수 모두 낮으므로 rank를 올리지 않고, max값도 갱신하지 않는다
- 만일 임의의 사원의 동료 점수가 max값보다 크거나 같다면
- 임의의 사원의
점수 합과 완호의점수 합을 비교해서 완호보다 더 높다면 상위에 위치한 것이므로 rank + 1을 해준다. 동료 점수max값을 갱신한다
- 임의의 사원의
💬 풀이
import Foundation
func solution(scores:[[Int]]) -> Int {
let wanhoScore = scores[0]
let sum = wanhoScore[0] + wanhoScore[1]
let scoreArr = scores.sorted(by: { $0[0] > $1[0] || ($0[0] == $1[0] && $0[1] < $1[1]) })
var rank = 1
var colleagueScoreMax = 0
for i in scoreArr {
// 완호가 인센티브를 받지 못하는 경우
if wanhoScore[0] < i[0] && wanhoScore[1] < i[1] {
return -1
}
// 0번은 내림차순으로 내려가므로 1번 점수가(동료점수) 크거나 같을 경우에만 두 점수가 모두 낮지 않음을 의미함
if colleagueScoreMax <= i[1] {
// 완호의 점수보다 더 높다면 상위에 위치한 것이므로 rank + 1
if sum < i[0] + i[1] {
rank += 1
}
colleagueScoreMax = i[1]
}
}
return rank
}Metadata
Metadata
Assignees
Labels
No labels