TIL/알고리즘 공부

프로그래머스 Lv. 1 Swift 알고리즘 - 콜라 문제

여의도사노비 2022. 12. 30. 16:05
728x90

콜라 문제는 몫과 나머지만 잘 활용하면 간단하게 풀 수 있는 문제였다.

 

빈병과 새병을 구분하여 빈병을 바꿔서 만들어진 새병 + 바꾸지 못한 기존 빈병 개수를 누적하고

이를 바탕으로 빈병 -> 새병 -> 빈병 과정을 반복하여 값을 세준다.

 

 

 

이 문제를 풀면서 생각한 논리적 흐름

  1. 처음 시작할 때 병은 emptyBottle에 저장한다.
  2. 새로 생기는 병(emptyBottle / a * b)을 newBottle에 저장해준다.
  3. emptyBottle을 새로 생긴 병 + 제출하지 못해 기존에 남아있던 빈병으로 정의해준다.
  4. 답은 내가 몇개의 새병을 받았는지 확인해야하므로 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)

  1. 없음