Swift랑 친해지기/programmers 풀기

[프로그래머스] 과일 장수 (Swift)

데브킹덕 2022. 12. 18. 02:46

https://school.programmers.co.kr/learn/courses/30/lessons/135808

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

변수설정

  • score: score 배열 내림차순으로 정렬
  • emptyArray : 0을 m개씩 가지고 있는 배열
  • count : m개까지 사과를 넣으면 다시 0으로 초기화하기 위함
  • result : 과일 장수가 얻을 수 있는 최대 이익

풀이

1. 내림차순으로 과일 점수가 담긴 score 배열을 정렬함

높을 점수의 사과들을 묶어 팔기 위함임

 

2. 과일의 총 개수(score.count) 에서 한개의 상자당 들어갈 사과의 수(m)을 나눈 몫에 m을 곱하면 총 판매할 수 있는 사과의 개수가 나옴

3. 0으로 초기화한 emptyArray에 차곡차곡 사과를 담고 한 박스에 사과를 다 담으면 (count == m) result에 최소레벨 사과 x m을 더해줌  

import Foundation

func solution(_ k:Int, _ m:Int, _ score:[Int]) -> Int {
    
    var score = score.sorted(by:>) 
    var emptyArray = Array(repeating:0, count:m)
    var count = 0
    var result = 0
    
    for i in 0..<(score.count / m) * m{
        emptyArray[count] = score[i]
        count += 1
        if count == m{
            result = result + (emptyArray[m-1] * m)
            count = 0
        }
    }
    
    return result
}