[프로그래머스] 콜라 문제

fsm12·2023년 6월 19일
0

프로그래머스

목록 보기
15/57
post-thumbnail

문제링크

문제 이해

[ 입력형태 / 조건 ]

a
콜라를 받기 위해 마트에 주어야 하는 병 수 | 2

b
빈 병 a개를 가져다 주면 마트가 주는 콜라 병 수 | 1

n
상빈이가 가지고 있는 빈 병의 개수 | 20

[ 문제 ]

=> 상빈이가 받을 수 있는 콜라의 병 수를 return

[ 풀이 ]

빈병의 개수를 a만큼 빼고 b만큼 증가시키면서 구함



코드

> [성공] 1차 시도 : 풀어서 구현

  • 생각한 풀이 그대로 구현
class Solution {
    public int solution(int a, int b, int n) {
        int empty = n, ans = 0;
        while(empty >= a){
            empty-=a;
            empty+=b;
            ans += b;
        }
        return ans;
    }
}



> [성공] 2차 시도 : 나머지 연산 이용

class Solution {
    public int solution(int a, int b, int n) {
        int ans = 0;
        int empty = n;
        
        while(empty >= a) {
            int get = empty / a * b;
            empty = empty % a + get;
            ans += get;
        }
        return ans;
    }
}

=> 주의점) int get = empty / a * b; 에서 b를 먼저 곱하면 틀렸습니다가 나옴


TIP : 정수형으로 나누기 연산을 할 경우, 소숫점 아래가 버려지는 경우가 생길 수 있으므로 잘 고려해야 한다.

0개의 댓글