728x90
[Swift] 프로그래머스 명예의 전당 (1)(lv. 1)
1. 문제
https://school.programmers.co.kr/learn/courses/30/lessons/138477
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
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 |
댓글