⌨️ Language/swift

[Swift] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ LV.1 λͺ…μ˜ˆμ˜ μ „λ‹Ή (1)

hyebin (Helia) 2023. 3. 15. 15:54
λ°˜μ‘ν˜•
ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ LV.1 λͺ¨μŒ

λͺ…μ˜ˆμ˜ μ „λ‹Ή (1)

문제 μ„€λͺ…

"λͺ…μ˜ˆμ˜ μ „λ‹Ή"μ΄λΌλŠ” TV ν”„λ‘œκ·Έλž¨μ—μ„œλŠ” 맀일 1λͺ…μ˜ κ°€μˆ˜κ°€ λ…Έλž˜λ₯Ό λΆ€λ₯΄κ³ , μ‹œμ²­μžλ“€μ˜ 문자 νˆ¬ν‘œμˆ˜λ‘œ κ°€μˆ˜μ—κ²Œ 점수λ₯Ό λΆ€μ—¬ν•©λ‹ˆλ‹€. 맀일 μΆœμ—°ν•œ κ°€μˆ˜μ˜ μ μˆ˜κ°€ μ§€κΈˆκΉŒμ§€ μΆœμ—° κ°€μˆ˜λ“€μ˜ 점수 쀑 μƒμœ„ k번째 이내이면 ν•΄λ‹Ή κ°€μˆ˜μ˜ 점수λ₯Ό λͺ…μ˜ˆμ˜ μ „λ‹Ήμ΄λΌλŠ” λͺ©λ‘μ— 올렀 κΈ°λ…ν•©λ‹ˆλ‹€. 즉 ν”„λ‘œκ·Έλž¨ μ‹œμž‘ 이후 μ΄ˆκΈ°μ— kμΌκΉŒμ§€λŠ” λͺ¨λ“  μΆœμ—° κ°€μˆ˜μ˜ μ μˆ˜κ°€ λͺ…μ˜ˆμ˜ 전당에 였λ₯΄κ²Œ λ©λ‹ˆλ‹€. k일 λ‹€μŒλΆ€ν„°λŠ” μΆœμ—° κ°€μˆ˜μ˜ μ μˆ˜κ°€ 기쑴의 λͺ…μ˜ˆμ˜ μ „λ‹Ή λͺ©λ‘μ˜ k번째 μˆœμœ„μ˜ κ°€μˆ˜ μ μˆ˜λ³΄λ‹€ 더 λ†’μœΌλ©΄, μΆœμ—° κ°€μˆ˜μ˜ μ μˆ˜κ°€ λͺ…μ˜ˆμ˜ 전당에 였λ₯΄κ²Œ 되고 기쑴의 k번째 μˆœμœ„μ˜ μ μˆ˜λŠ” λͺ…μ˜ˆμ˜ μ „λ‹Ήμ—μ„œ λ‚΄λ €μ˜€κ²Œ λ©λ‹ˆλ‹€.

 

이 ν”„λ‘œκ·Έλž¨μ—μ„œλŠ” 맀일 "λͺ…μ˜ˆμ˜ μ „λ‹Ή"의 μ΅œν•˜μœ„ 점수λ₯Ό λ°œν‘œν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, k = 3이고, 7일 λ™μ•ˆ μ§„ν–‰λœ κ°€μˆ˜μ˜ μ μˆ˜κ°€ [10, 100, 20, 150, 1, 100, 200]이라면, λͺ…μ˜ˆμ˜ μ „λ‹Ήμ—μ„œ λ°œν‘œλœ μ μˆ˜λŠ” μ•„λž˜μ˜ κ·Έλ¦Όκ³Ό 같이 [10, 10, 10, 20, 20, 100, 100]μž…λ‹ˆλ‹€.

λͺ…μ˜ˆμ˜ μ „λ‹Ή λͺ©λ‘μ˜ μ μˆ˜μ˜ κ°œμˆ˜ k, 1일뢀터 λ§ˆμ§€λ§‰ λ‚ κΉŒμ§€ μΆœμ—°ν•œ κ°€μˆ˜λ“€μ˜ μ μˆ˜μΈ scoreκ°€ μ£Όμ–΄μ‘Œμ„ λ•Œ, λ§€μΌ λ°œν‘œλœ λͺ…μ˜ˆμ˜ μ „λ‹Ήμ˜ μ΅œν•˜μœ„ μ μˆ˜λ₯Ό return ν•˜λŠ” solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•΄ μ£Όμ„Έμš”.

μ œν•œ 사항

  • 3 ≤ k ≤ 100
  • 7 ≤ score의 길이 ≤ 1,000
    • 0 ≤ score[i] ≤ 2,000

μž…μΆœλ ₯ 예

k score result
3 [10, 100, 20, 150, 1, 100, 200] [10, 10, 10, 20, 20, 100, 100]
4 [0, 300, 40, 300, 20, 70, 150, 50, 500, 1000] [0, 0, 0, 0, 20, 40, 70, 70, 150, 300]

μž…μΆœλ ₯ 예 μ„€λͺ…

μž…μΆœλ ₯ 예 #1

  • 문제의 μ˜ˆμ‹œμ™€ κ°™μŠ΅λ‹ˆλ‹€.

μž…μΆœλ ₯ 예 #2

  • μ•„λž˜μ™€ κ°™μ΄, [0, 0, 0, 0, 20, 40, 70, 70, 150, 300]을 return ν•©λ‹ˆλ‹€.


제좜

import Foundation

func solution(_ k:Int, _ score:[Int]) -> [Int] {
    var arr = [Int]()
    var re = [Int]()
    for s in score{
        arr.append(s)
        arr = arr.sorted(by: >)
        
        if arr.count < k{
            re.append(arr.last!)
        }else{
            re.append(arr[k-1])
        }
    }
    return re
}
점수λ₯Ό μ €μž₯ν•  Intν˜• λ°°μ—΄ arr와 κ²°κ³Όλ₯Ό μ €μž₯ν•  Intν˜• λ°°μ—΄ reλ₯Ό μ„ μ–Έν•˜λ‹€.
score λ°°μ—΄μ˜ λͺ¨λ“  μš”μ†Œλ“€μ„ νƒμƒ‰ν•œλ‹€.
arr에 μˆœμ„œλŒ€λ‘œ score λ°°μ—΄μ˜ μš”μ†Œλ₯Ό μΆ”κ°€ν•˜κ³  λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ μ •λ ¬ν•œλ‹€.
arr의 크기가 k보닀 μž‘λ‹€λ©΄ arr의 λ§ˆμ§€λ§‰ μš”μ†Œλ₯Ό re 배열에 μΆ”κ°€ν•˜κ³ , μ•„λ‹ˆλΌλ©΄ arr[k-1]λ₯Ό re에 μΆ”κ°€ν•œλ‹€.
λ°˜μ‘ν˜•