728x90
[Swift] 프로그래머스 과일 장수(lv. 1)
1. 문제
https://school.programmers.co.kr/learn/courses/30/lessons/135808
2. 접근
처음 문제를 봤을 때 단순히 내림차순으로 하여 m개 만큼 쌍을 지어 묶으면 된다고 생각했다. 어느 쌍에서 [가장 작은 수 * m] 한 것을 누적합하면 result를 얻을 수 있을 것이라 생각했다.
아래 코드에는 sortedScore에 내림차순된 score가 들어가 있다. 그리고 순회를 돌면서 tempArray에 sortedScore[i] 를 계속 집어 넣는다. 그런 다음, m * i 번 째 숫자가 들어갈 때, tempArray에는 m개 만큼 원소가 들어가 있고, 그 중 가장 작은 수 * m을 하여 answer에 누적하여 합을 한다. 그 다음 tempArray는 초기화 시켜준다.
정렬 -> 부분 나누기 -> 누적합의 과정으로 답을 충분히 얻을 수 있었다.
3. 코드
import Foundation
func solution(_ k:Int, _ m:Int, _ score:[Int]) -> Int {
let sortedScore = score.sorted(by: >)
var answer = 0
var tempArray = [Int]()
for i in 0 ... sortedScore.count - 1 {
tempArray.append(sortedScore[i])
if i % m == m - 1 {
answer += tempArray.min()! * m
tempArray = [Int]()
}
}
return answer
}
728x90
'Problem Solving' 카테고리의 다른 글
[Swift] 프로그래머스 성격 유형 검사하기(lv. 1) (0) | 2023.02.21 |
---|---|
[Swift] 프로그래머스 문자열 나누기(lv. 1) (0) | 2023.02.20 |
[Swift] 프로그래머스 옹알이 (2)(lv. 1) (0) | 2023.02.17 |
[Swift] 프로그래머스 신규 아이디 추천(lv. 1) (0) | 2023.02.16 |
[Swift] 프로그래머스 기사단원의 무기(lv. 1) (0) | 2023.02.15 |
댓글