Bibi's DevLog πŸ€“πŸŽ

[λ°±μ€€ 5032] 탄산 음료 (Swift) λ³Έλ¬Έ

ν”„λ‘œκ·Έλž˜λ°/μ•Œκ³ λ¦¬μ¦˜ 풀이 Swift

[λ°±μ€€ 5032] 탄산 음료 (Swift)

λΉ„λΉ„ bibi 2022. 10. 26. 12:27

5032번: 탄산 음료

예제λ₯Ό 보고 β€œ9 0 3 인데 μ–΄λ–»κ²Œ 3이 μ•„λ‹ˆλΌ 4κ°€ 닡이지??” 라며 μƒκ°ν•˜λ‹€κ°€, ꡬ글링을 ν•΄μ„œμ•Ό 무슨 λ¬Έμ œμΈμ§€ μ΄ν•΄ν–ˆλ‹€.

빈 λ³‘μ˜ μˆ˜κ°€ 9개이고, μƒˆ 병 1개둜 λ°”κΎΈλŠ” 데 ν•„μš”ν•œ 빈 λ³‘μ˜ μˆ˜κ°€ 3개일 λ•Œ

  • 9 / 3 = 3개의 μƒˆ 병을 받을 수 있음
  • λ‹€ λ§ˆμ‹œλ©΄ 3개의 빈 병이 됨
  • λ”°λΌμ„œ 3 / 3 = 1개의 μƒˆ 병을 λ°›μ•„ 또 λ§ˆμ‹€ 수 있음.
  • κ·Έλž˜μ„œ 총 4개λ₯Ό λ§ˆμ‹€ 수 μžˆλŠ” 것!

즉 μƒˆ λ³‘μœΌλ‘œ λ°”κΏ€ λ•Œ λ§ˆλ‹€ κ·Έ λͺ«μ„ 빈 병 μˆ˜μ— λ”ν•΄μ€˜μ•Ό ν•œλ‹€. (λ‹€ λ§ˆμ‹œλ©΄ λΉˆλ³‘μ΄ λ˜λ―€λ‘œ)

풀이1 (ν‹€λ¦Ό)

let inputArr = readLine()!.split(separator: " ").map { Int($0)! }
var bottle = inputArr[0] + inputArr[1]
let exchange = inputArr[2]
var cola = 0
while bottle >= exchange {
    cola += bottle / exchange // λͺ«
        cola += bottle % exchange // λ‚˜λ¨Έμ§€
    bottle = bottle / exchange
}
print(cola)

μ²˜μŒμ— μ†μœΌλ‘œ λ‚˜λˆ—μ…ˆν•΄λ³΄λ‹ˆ κ²°κ³Όκ°€ β€˜λ§€ λ‚˜λˆ—μ…ˆμ˜ λͺ«κ³Ό λ‚˜λ¨Έμ§€λ₯Ό λͺ¨λ‘ λ”ν•œ 것’ κ³Ό κ°™κΈΈλž˜ μ΄λ ‡κ²Œ ν’€μ—ˆμ—ˆλ‹€.

ν•˜μ§€λ§Œ λ°”λ‘œ ν‹€λ Έκ³ ..

예제 1,2λŠ” λͺ¨λ‘ ν†΅κ³Όν–ˆκΈ° λ•Œλ¬Έμ— 이 풀이가 λ§žλŠ” 쀄 μ•Œμ•˜λŠ”λ°, λͺ«μ„ 빈 병에 더해주지 μ•Šμ•˜κΈ° λ•Œλ¬Έμ— 계산이 ν‹€λ Έλ‹€.

λ°˜λ‘€λ‘œ, 5 0 3 을 λ„£μ–΄ 보면 μ •λ‹΅(2)이 λ‚˜μ˜€μ§€ μ•Šμ•„ ν‹€λ¦° 풀이이닀.

풀이2

let inputArr = readLine()!.split(separator: " ").map { Int($0)! }
var bottle = inputArr[0] + inputArr[1]
let exchange = inputArr[2]
var cola = 0
while bottle >= exchange {
    cola += bottle / exchange // λͺ«
    bottle = bottle / exchange + bottle % exchange // λ°”κΎΌ μ½œλΌλ„ λ‹€ λ¨Ήκ³  λΉˆλ³‘μ— λ‹€μ‹œ 더해야 함
}
print(cola)

λ³‘μ˜ μˆ˜μ— λͺ«κ³Ό λ‚˜λ¨Έμ§€λ₯Ό λͺ¨λ‘ 더해주어야 λ‹€μŒ μ‹œν–‰ λ•Œ μ •ν™•ν•œ 빈 병 갯수둜 계산할 수 μžˆλ‹€.