728x90
[Swift] 프로그래머스 콜라 문제(lv. 1)
1. 문제
https://school.programmers.co.kr/learn/courses/30/lessons/132267
2. 접근
콜라를 먹으면서 글을 쓰고 있다. 콜라는 좀 기계들이 무한 생산하여 무료로 제공되었으면 좋겠다.
무튼 이 문제에서는 빈병과 먹은 콜라 수를 잘 나누어 갈라야 한다.
반복의 횟수를 알 수 없기 때문에 while문을 활용하면 될 것이다.
코드의 설명은 아래와 같다.
만약 빈 병의 개수가 a로 나누어 떨어진다면, 먹은 콜라는 (빈병 / a) * b로 셀 수 있다. 한 편 빈병도 똑같은 식으로 셀 수 있을 것이다.
cokeCount는 누적되어야 하는 값이고, emptyBottle은 계속 갱신되어야 하는 값이기 때문에 신경써서 나누어 관리해주면 된다.
한편 나누어 떨어지지 않는다면, emptyBottle에 a로 나눈 나머지를 추가로 더하는 과정만 추가하면 된다.
이 반복을 emptyBottle이 a 미만이 될 때까지 반복해주는 것이다. while의 조건을 통과하지 못하는 순간 탈출할 것이고, cokeCount를 리턴한다. 그러면 먹은 '콜라의 개수'를 온전히 셀 수 있다.
3. 코드
import Foundation
func solution(_ a:Int, _ b:Int, _ n:Int) -> Int {
var emptyBottle = n
var cokeCount = 0
while emptyBottle >= a {
if emptyBottle % a == 0 {
cokeCount += (emptyBottle / a) * b
emptyBottle = (emptyBottle / a) * b
} else {
cokeCount += (emptyBottle / a) * b
emptyBottle = (emptyBottle / a) * b + (emptyBottle % a)
}
}
return cokeCount
}
728x90
'Problem Solving' 카테고리의 다른 글
[Swift] 프로그래머스 푸드 파이트 대회(lv. 1) (0) | 2023.02.01 |
---|---|
[Swift] 프로그래머스 실패율(2019 KAKAO Blind Recruitment)(lv. 1) (0) | 2023.01.31 |
[Swift] 프로그래머스 소수 찾기(lv. 1) (1) | 2023.01.27 |
[Swift] 프로그래머스 2016년(lv. 1) (2) | 2023.01.25 |
[Swift] 프로그래머스 두 개 뽑아서 더하기(lv. 1) (0) | 2023.01.24 |
댓글