티스토리 뷰

728x90
반응형

프로그래머스) 과일 장수 - Level1

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

 

프로그래머스

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

programmers.co.kr

import Foundation

// k 점부터 1점 까지의 사과
// 한 상자에 사과를 m개씩 담음
// (가장 낮은 점수 * 사과 갯수)가 한 상자의 가격

// 한 상자 단위로만 팔고, 남은 사과는 버림.
// 얻을 수 있는 최대 이익은?

// 총 만들 수 있는 상자 수
// 싼 점수의 사과

func solution(_ k:Int, _ m:Int, _ score:[Int]) -> Int {
    var sortedScores: [Int] = score.sorted(by: >)
    var answer: Int = 0
    
    while sortedScores.count >= m {
        var apples: [Int] = []
        
        for _ in 0..<m {
            apples.append(sortedScores.removeFirst())
        }
        
        answer += apples[m - 1] * m
    }
    
    return answer
}

// 테스트 11-15 시간 초과.
// while 문에서 시간 복잡도가 크다고 판단.

func solution(_ k:Int, _ m:Int, _ score:[Int]) -> Int {
    var answer: Int = 0
    var sortedScores: [Int] = score.sorted(by: >)
    
    // m 간격으로 마지막 점수를 계산.
    // 인덱스로 접근하기 때문에 시간복잡도가 적다고 판단.
    
    // to 파라미터는 포함x
    // through 파라미터는 포함o
    
    for index in stride(from: m - 1, to: sortedScores.count, by: m) {
        answer += sortedScores[index] * m
    }
    
    return answer
}

print(solution(4, 3, [4, 1, 2, 2, 4, 4, 4, 4, 1, 2, 4, 2]))
// 33
728x90
반응형
댓글
최근에 올라온 글
최근에 달린 댓글
글 보관함
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
링크
Total
Today
Yesterday