728x90
[Swift] 프로그래머스 명예의 전당 (1)(lv. 1)
1. 문제
https://school.programmers.co.kr/learn/courses/30/lessons/138477
2. 접근
honorList 라는 배열의 크기가 k가 넘지 않게끔 조절해주면서, 매번 내림차순으로 정렬하면서 마지막 인덱스의 원소를 계속 구해주면 되는 문제였다. honorList의 크기가 3이 되는 순간부터, 마지막 숫자가 score[i] 보다 작다면, honorList의 마지막 수를 새로운 score[i]로 바꾸고 sort를 다시 해주고, 맨 마지막 인덱스의 수를 answer에 append한다.
이렇게 score 전부를 순회하고 나면, 문제에서 요구하는 바와 같이 구현을 할 수 있다.
정렬과 배열을 제한적으로 사용하는 로직을 구현하는 것이 핵심이었다.
3. 코드
import Foundation
func solution(_ k:Int, _ score:[Int]) -> [Int] {
var honorList = [Int]()
var answer = [Int]()
for i in 0 ... score.count - 1 {
if i <= k - 1 {
honorList.append(score[i])
honorList.sort(by: >)
answer.append(honorList[honorList.count - 1])
} else {
if honorList[k - 1] >= score[i] {
answer.append(honorList[k - 1])
} else {
honorList[k - 1] = score[i]
honorList.sort(by: >)
answer.append(honorList[k - 1])
}
}
}
return answer
}
728x90
'Problem Solving' 카테고리의 다른 글
[Swift] 프로그래머스 키패드 누르기(lv. 1) (0) | 2023.02.13 |
---|---|
[Swift] 프로그래머스 숫자 짝꿍(lv. 1) (0) | 2023.02.10 |
[Swift] 프로그래머스 체육복(lv. 1) (0) | 2023.02.08 |
[Swift] 프로그래머스 로또의 최고 순위와 최저 순위(lv. 1) (0) | 2023.02.06 |
[Swift] 프로그래머스 - 모의고사(lv. 1) (0) | 2023.02.04 |
댓글