MUKER_DEV with iOS

[swift] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ - 과일 μž₯수 λ³Έλ¬Έ

πŸ€– μ•Œκ³ λ¦¬μ¦˜/programmers

[swift] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ - 과일 μž₯수

MUKER 2023. 1. 31. 10:49
 

ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€

μ½”λ“œ μ€‘μ‹¬μ˜ 개발자 μ±„μš©. μŠ€νƒ 기반의 ν¬μ§€μ…˜ 맀칭. ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€μ˜ 개발자 λ§žμΆ€ν˜• ν”„λ‘œν•„μ„ λ“±λ‘ν•˜κ³ , λ‚˜μ™€ 기술 ꢁ합이 잘 λ§žλŠ” 기업듀을 맀칭 λ°›μœΌμ„Έμš”.

programmers.co.kr

문제 ν‘ΈλŠ” 데 μžˆμ–΄ 도움이 λ˜λ„λ‘ λ‚˜μ˜ 풀이와 κ°œμ„ λœ 풀이λ₯Ό μ˜¬λ¦½λ‹ˆλ‹€.
λ˜ν•œ 풀이 ν›„ λ‹€λ₯Έ μ‚¬λžŒμ˜ 풀이λ₯Ό 보고 μ°Έκ³ ν• λ§Œν•œ 풀이도 μ˜¬λ¦½λ‹ˆλ‹€.

- λ¬Έμ œμ— 따라 λ‚˜μ˜ ν’€μ΄λ§Œ μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.
- ν•΄λ‹Ή 풀이듀은 풀이 쀑 ν•˜λ‚˜μΌ 뿐 μ΅œμ„ μ˜ ν’€μ΄λŠ” 아닐 수 μžˆμŠ΅λ‹ˆλ‹€.

 


 

문제 μ„€λͺ…

 

가지고 μžˆλŠ” 사과λ₯Ό

m 개수만큼의 사과λ₯Ό μƒμžμ— λ‹΄μ•„

각각 μƒμžμ˜ μ΅œμ € 점수 μ‚¬κ³Όλ‘œ μ‚¬κ³Όμƒμžμ˜ 점수λ₯Ό μ±…μ •ν–ˆμ„ λ•Œ

μ΅œλŒ€ 이읡을 얻을 수 있게 λ§Œλ“œμ‹œμ˜€.

 


 

λ‚˜μ˜ 풀이

func solution(_ k:Int, _ m:Int, _ score:[Int]) -> Int {
    var apple = score.sorted(by: < )
    let BoxCount = score.count / m
    var appleBox = Array(repeating: Array(repeating: 0, count: m), count: BoxCount)
    for i in 0..<BoxCount {
        for j in 0..<m {
            appleBox[i][j] = apple.last!
            apple.removeLast()
        }
    }
    return appleBox.map { $0.min()! * m }.reduce(0,+)
}

 

μ‚¬κ³Όλ“€μ˜ 점수λ₯Ό μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬ ν•˜μ—¬

μž‘μ€κ°’ -> ν°κ°’μœΌλ‘œ 였게 ν•©λ‹ˆλ‹€.

 

2차원 배열을 λ§Œλ“€μ–΄

빈 μ‚¬κ³Όλ°•μŠ€λ“€μ„ μ€€λΉ„ν–ˆκ³ 

 

μ •λ ¬ν•œ 배열을 λ’€μ—μ„œλΆ€ν„°

빈 μ‚¬κ³Όλ°•μŠ€μ— λ‚˜λˆ  λ‹΄μ•˜μŠ΅λ‹ˆλ‹€.

 

각각의 λ°•μŠ€μ˜ μ΅œμ†Œ 가격 * μ‚¬κ³Όμ˜ 갯수λ₯Ό ν•˜κ³ 

각각 λ°•μŠ€λ§ˆλ‹€μ˜ 가격을 λͺ¨λ‘ λ”ν–ˆμŠ΅λ‹ˆλ‹€.


 

μ°Έκ³ ν• λ§Œν•œ 풀이

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

 

각각의 μ‚¬κ³Όμƒμž 가격은 μ΅œμ†Œκ°’λ§Œ μ•Œμ•„λ„ λ˜κΈ°μ—

μ •λ ¬ν•œ ν›„ 크기에 맞게

μ΅œμ†Œκ°’λ§Œ λΉΌλ‚΄μ–΄ 계산을 ν•΄μ€¬μŠ΅λ‹ˆλ‹€.