ν‹°μŠ€ν† λ¦¬ λ·°

Algorithm

[Algorithm] κΈ°λŠ₯개발

_보름 2021. 6. 21. 17:16

πŸ–₯ 문제

문제 μ„€λͺ…

ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ νŒ€μ—μ„œλŠ” κΈ°λŠ₯ κ°œμ„  μž‘μ—…μ„ μˆ˜ν–‰ μ€‘μž…λ‹ˆλ‹€. 각 κΈ°λŠ₯은 진도가 100%일 λ•Œ μ„œλΉ„μŠ€μ— λ°˜μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
또, 각 κΈ°λŠ₯의 κ°œλ°œμ†λ„λŠ” λͺ¨λ‘ λ‹€λ₯΄κΈ° λ•Œλ¬Έμ— 뒀에 μžˆλŠ” κΈ°λŠ₯이 μ•žμ— μžˆλŠ” κΈ°λŠ₯보닀 λ¨Όμ € 개발될 수 있고, μ΄λ•Œ 뒀에 μžˆλŠ” κΈ°λŠ₯은 μ•žμ— μžˆλŠ” κΈ°λŠ₯이 배포될 λ•Œ ν•¨κ»˜ λ°°ν¬λ©λ‹ˆλ‹€.
λ¨Όμ € λ°°ν¬λ˜μ–΄μ•Ό ν•˜λŠ” μˆœμ„œλŒ€λ‘œ μž‘μ—…μ˜ 진도가 적힌 μ •μˆ˜ λ°°μ—΄ progresses와 각 μž‘μ—…μ˜ 개발 속도가 적힌 μ •μˆ˜ λ°°μ—΄ speedsκ°€ μ£Όμ–΄μ§ˆ λ•Œ 각 λ°°ν¬λ§ˆλ‹€ λͺ‡ 개의 κΈ°λŠ₯이 λ°°ν¬λ˜λŠ”μ§€λ₯Ό return ν•˜λ„λ‘ solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•˜μ„Έμš”.

μ œν•œ 사항

  • μž‘μ—…μ˜ 개수(progresses, speedsλ°°μ—΄μ˜ 길이)λŠ” 100개 μ΄ν•˜μž…λ‹ˆλ‹€.
  • μž‘μ—… μ§„λ„λŠ” 100 미만의 μžμ—°μˆ˜μž…λ‹ˆλ‹€.
  • μž‘μ—… μ†λ„λŠ” 100 μ΄ν•˜μ˜ μžμ—°μˆ˜μž…λ‹ˆλ‹€.
  • λ°°ν¬λŠ” ν•˜λ£¨μ— ν•œ 번만 ν•  수 있으며, ν•˜λ£¨μ˜ 끝에 이루어진닀고 κ°€μ •ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ μ§„λ„μœ¨μ΄ 95%인 μž‘μ—…μ˜ 개발 속도가 ν•˜λ£¨μ— 4%라면 λ°°ν¬λŠ” 2일 뒀에 μ΄λ£¨μ–΄μ§‘λ‹ˆλ‹€.

πŸ€” 풀이 방법

  • μž‘μ—…μ˜ 진도 : [93, 30, 55] / 개발 속도 : [1, 30, 5]
    • 1번 κΈ°λŠ₯ : 7일간 μž‘μ—… ν›„ 배포가 κ°€λŠ₯ν•˜λ‹€.
    • 2번 κΈ°λŠ₯ : 3일간 μž‘μ—… ν›„ 배포가 κ°€λŠ₯ν•˜λ‹€. 1번 κΈ°λŠ₯보닀 λ¨Όμ € κ°œλ°œλ˜μ—ˆλ‹€. 1번 κΈ°λŠ₯κ³Ό ν•¨κ»˜ λ°°ν¬ν•œλ‹€.
      • 1, 2번 κΈ°λŠ₯ 배포
    • 3번 κΈ°λŠ₯ : 9일간 μž‘μ—… ν›„ 배포가 κ°€λŠ₯ν•˜λ‹€.
      • 3번 κΈ°λŠ₯ 배포
  • μž‘μ—…μ˜ 진도 : [95, 90, 99, 99, 80, 99] / 개발 속도 : [1, 1, 1, 1, 1, 1]
    • 1번 κΈ°λŠ₯ : 5일간 μž‘μ—… ν›„ 배포가 κ°€λŠ₯ν•˜λ‹€.
      • 1번 κΈ°λŠ₯ 배포
    • 2번 κΈ°λŠ₯ : 10일간 μž‘μ—… ν›„ 배포가 κ°€λŠ₯ν•˜λ‹€.
    • 3번 κΈ°λŠ₯ : 1일간 μž‘μ—… ν›„ 배포가 κ°€λŠ₯ν•˜λ‹€. 2번 κΈ°λŠ₯보닀 λ¨Όμ € κ°œλ°œλ˜μ—ˆλ‹€. 2번 κΈ°λŠ₯κ³Ό ν•¨κ»˜ λ°°ν¬ν•œλ‹€.
    • 4번 κΈ°λŠ₯ : 1일간 μž‘μ—… ν›„ 배포가 κ°€λŠ₯ν•˜λ‹€. 3번 κΈ°λŠ₯κ³Ό λ™μ‹œμ— κ°œλ°œλ˜μ—ˆλ‹€. 2번 κΈ°λŠ₯κ³Ό ν•¨κ»˜ λ°°ν¬ν•œλ‹€.
      • 2, 3, 4번 κΈ°λŠ₯ 배포
    • 5번 κΈ°λŠ₯ : 20일간 μž‘μ—… ν›„ 배포가 κ°€λŠ₯ν•˜λ‹€.
    • 6번 κΈ°λŠ₯ : 1일간 μž‘μ—… ν›„ 배포가 κ°€λŠ₯ν•˜λ‹€. 5번 κΈ°λŠ₯보닀 λ¨Όμ € κ°œλ°œλ˜μ—ˆλ‹€. 5번 κΈ°λŠ₯κ³Ό ν•¨κ»˜ λ°°ν¬ν•œλ‹€.
      • 5, 6번 κΈ°λŠ₯ 배포

πŸ‘©πŸ»‍πŸ’» Swift Code

import Foundation

func solution(_ progresses:[Int], _ speeds:[Int]) -> [Int] {
    var progresses = progresses
    var speeds = speeds
    var answer: [Int] = []

    while progresses != [] {
        for i in 0..<progresses.count {
            progresses[i] += speeds[i]
        }

        var count = 0
        while progresses != [] && progresses.first! >= 100 {
            progresses.removeFirst()
            speeds.removeFirst()
            count += 1
        }

        if count != 0 {
            answer.append(count)
        }
    }

    return answer
}

 

 

μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅ - κΈ°λŠ₯개발

ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ νŒ€μ—μ„œλŠ” κΈ°λŠ₯ κ°œμ„  μž‘μ—…μ„ μˆ˜ν–‰ μ€‘μž…λ‹ˆλ‹€. 각 κΈ°λŠ₯은 진도가 100%일 λ•Œ μ„œλΉ„μŠ€μ— λ°˜μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 또, 각 κΈ°λŠ₯의 κ°œλ°œμ†λ„λŠ” λͺ¨λ‘ λ‹€λ₯΄κΈ° λ•Œλ¬Έμ— 뒀에 μžˆλŠ” κΈ°λŠ₯이 μ•žμ— μžˆλŠ”

programmers.co.kr

 

λŒ“κΈ€
곡지사항
μ΅œκ·Όμ— 올라온 κΈ€
μ΅œκ·Όμ— 달린 λŒ“κΈ€
Total
Today
Yesterday
링크
Β«   2024/09   Β»
일 μ›” ν™” 수 λͺ© 금 ν† 
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
κΈ€ 보관함