-
프로그래머스 - 콜라 문제알고리즘 2022. 11. 4.반응형
https://school.programmers.co.kr/learn/courses/30/lessons/132267
내 풀이
public class P_44 { static int ans = 0; public int solution(int a, int b, int n) { if(n < a) { return ans; } int minus = (n / a) * a; int plus = (minus / a) * b; int empty = n - minus + plus; ans += plus; return solution(a, b, empty); } public static void main(String[] args) { // 콜라문제 int a = 3; int b = 2; int n = 20; P_44 p = new P_44(); int result = p.solution(a, b, n); System.out.println(result); } }
답을 구하기 위해서는 빈병을 줄여가면서 받았던 콜라들을 구해야 하기 때문에 재귀를 이용해서 풀었다.
재귀 탈출의 조건은 빈병 n 이 교환 가능한 콜라의 갯수 a 보다 작아질 때 이다.
더 이상 콜라를 교환할 수 없을때까지 !
다른 사람 풀이
class Solution { public int solution(int a, int b, int n) { int answer = 0; while (n >= a) { answer += b * (n / a); n = b * (n / a) + n % a; } return answer; } }
class Solution { public int solution(int a, int b, int n) { int answer = 0; while(n >= a) { answer += n/a*b; n = n/a*b + n%a; } return answer; } }
반복문을 이용해서 풀 수 도있다.
n % a 나머지를 더하는 이유는 새로 받은 콜라들 + 기존에 나누어 떨어지지 못했던 나머지 빈병들을 합쳐야 현재 가지고 있는 빈병의 총 갯수를 알 수 있기 때문이다.
반응형'알고리즘' 카테고리의 다른 글
프로그래머스 - 문자열 나누기 (0) 2023.02.05 프로그래머스 - 크기가 작은 부분문자열 (0) 2023.01.24 프로그래머스 - 삼총사 (0) 2022.10.15 프로그래머스 - 체육복 (0) 2022.08.19 프로그래머스 - 실패율 (0) 2022.08.04