728x90
https://school.programmers.co.kr/learn/courses/30/lessons/138477?language=swift
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
처음엔 c++로 우선순위 큐로 할까 하고 했는데 뭐가 잘못되었는지 실패했다.
그래서 swift로 다시 차분하게 진행해봤다.
honor에는 최대 k개의 점수가 들어가도록 한다. 내림차순으로 점수를 정렬하는데, 여기서 sort를 사용해도 될까?
swift의 sort는 O(nlogn)의 시간 복잡도를 가지고, 최대 k는 100으로 시간 복잡도에서는 괜찮을 거 같다.
1. honor 내 점수 개수가 k개보다 적다면, honor에 점수를 추가한다.
2. honor의 최소 점수보다 크다면 맨 뒤에 점수(최소 점수)를 빼고 해당 점수를 넣는다. 그 후, 내림차순으로 정렬
3. honor 내의 최소 점수를 answer에 넣는다.
import Foundation
func solution(_ k:Int, _ score:[Int]) -> [Int] {
var answer = [Int]()
var honor = [Int]()
for sc in score {
if honor.count < k {
honor.append(sc)
}
if sc > honor.min()! {
honor.removeLast()
honor.append(sc)
honor.sort(by: >)
}
answer.append(honor.last!)
}
return answer
}
728x90
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/Swift] 크기가 작은 부분 문자열 (0) | 2022.12.26 |
---|---|
[프로그래머스/swift] 성격 유형 검사하기 (0) | 2022.12.07 |
[프로그래머스/swift] 옹알이(2) (0) | 2022.12.06 |
[프로그래머스/swift] 문자열 나누기 (0) | 2022.12.04 |
[프로그래머스/swift] 콜라 문제 (0) | 2022.12.04 |