728x90
콜라 문제는 몫과 나머지만 잘 활용하면 간단하게 풀 수 있는 문제였다.
빈병과 새병을 구분하여 빈병을 바꿔서 만들어진 새병 + 바꾸지 못한 기존 빈병 개수를 누적하고
이를 바탕으로 빈병 -> 새병 -> 빈병 과정을 반복하여 값을 세준다.
이 문제를 풀면서 생각한 논리적 흐름
- 처음 시작할 때 병은 emptyBottle에 저장한다.
- 새로 생기는 병(emptyBottle / a * b)을 newBottle에 저장해준다.
- emptyBottle을 새로 생긴 병 + 제출하지 못해 기존에 남아있던 빈병으로 정의해준다.
- 답은 내가 몇개의 새병을 받았는지 확인해야하므로 count에는 새로 받은 병들만 값을 누적한다.
* 코드
import Foundation
func solution(_ a:Int, _ b:Int, _ n:Int) -> Int {
var emptyBottle: Int = n
var newBottle: Int = 0
var count = 0
for _ in 0... {
if emptyBottle < a {
break
}
// 새병
newBottle = (emptyBottle / a) * b
// 새병을 다 마신 후 생긴 공병 + 남아있던 공병
emptyBottle = emptyBottle - (emptyBottle / a) * a + newBottle
// 추가로 받은 새병
count += newBottle
}
return count
}
정리(Today I Learned)
- 없음
'TIL > 알고리즘 공부' 카테고리의 다른 글
프로그래머스 Lv. 1 Swift 알고리즘 - 숫자 짝꿍 (0) | 2023.01.01 |
---|---|
프로그래머스 Lv. 1 Swift 알고리즘 - 삼총사 (0) | 2023.01.01 |
프로그래머스 Lv. 1 Swift 알고리즘 - 옹알이(2) (0) | 2022.12.30 |
프로그래머스 Lv. 1 Swift 알고리즘 - 햄버거 만들기 (0) | 2022.12.29 |
프로그래머스 Lv. 1 Swift 알고리즘 - 푸드 파이트 대회 (0) | 2022.12.29 |