적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

Algorithm/Programmers

[Swift 알고리즘] Programmers 콜라문제

hongssup_ 2022. 10. 26. 20:27
반응형

Level 1 연습문제 ○

콜라문제 

문제 설명
콜라를 받기 위해 마트에 주어야 하는 병 수 a, 빈 병 a개를 가져다 주면 마트가 주는 콜라 병 수 b, 상빈이가 가지고 있는 빈 병의 개수 n이 매개변수로 주어집니다. 상빈이가 받을 수 있는 콜라의 병 수를 return 하도록 solution 함수를 작성해주세요.
제한 사항
1 ≤ b < a  n ≤ 1,000,000

입출력 예시

print(solution(2,1,20)) //19
print(solution(3,1,20)) //9
print(solution(5,2,20)) //12

내 답안

func solution(_ a:Int, _ b:Int, _ n:Int) -> Int {
    var result = 0
    var n = n
    while n >= a {
        result += (n/a)*b
        n = (n/a)*b + n%a
    }
    return result
}

 

쓸데없이 37분 걸림 ㅡㅡ 

이해하는 데 크게 어렵진 않았지만 마트에서 주는 콜라 병 수 b병 처리하는 게 좀 헷갈려서 시간을 좀 잡아먹었다. 

 

멋진 답안

func solution(_ a:Int, _ b:Int, _ n:Int) -> Int {
    return (n > b ? n - b : 0) / (a - b) * b
}

규칙을 찾으셨나보다. 이런 생각은 어떻게 하는걸까.. 😮

728x90
반응형