문제
https://school.programmers.co.kr/learn/courses/30/lessons/152995
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
풀이
정렬 문제다. 두 개의 수를 가진 튜플(혹은 배열)이 있고, 두 수의 합이 아닌, 각 수를 개별적으로 두 값이 모두 작거나 큰지 판단해야 하는 경우에는 첫 번째 기준이 되는 값은 오름차순, 그리고 두 번째 기준이 되는 값은 내림차순으로 정렬하는 것이 일반적이다. 반대도 가능하고, 이 문제에서도 첫 번째 기준이 되는 값을 내림차순, 두 번째 기준이 되는 값을 오름차순으로 정렬하는 것이 더 편하다.
순위를 셀 때도 조금은 최적화할 수 있다. 제거해야할 원소들을 제거하고 새로운 배열을 만드는 것이 아닌, 그냥 배열을 순회하면서, 기준이 되는 원소보다 큰 수를 카운트 하면 된다.
코드
import Foundation
func solution(_ scores:[[Int]]) -> Int {
var answer = 1
let w = scores.first!
var scores = scores.sorted {
if $0[0] != $1[0] {
return $0[0] > $1[0]
} else {
return $0[1] < $1[1]
}
}
var minB = scores[0][1]
for score in scores {
if minB > score[1] {
if w == score { return -1 }
continue
}
if score[0] + score[1] > w[0] + w[1] {
answer += 1
}
minB = minB > score[1] ? minB : score[1]
}
return answer
}'Online Judge > Problem Solving' 카테고리의 다른 글
| [프로그래머스] 표 편집 - Swift (0) | 2025.08.14 |
|---|---|
| [프로그래머스] 합승 택시 요금 - Swift (0) | 2025.08.14 |
| [프로그래머스] 풍선 터트리기 - Swift (0) | 2025.08.05 |
| [프로그래머스] 순위 - Python (0) | 2025.08.05 |
| [프로그래머스] 셔틀버스 - Swift (0) | 2025.08.03 |