일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 프로그래머스
- c#
- BFS
- QueryDSL
- Unity2D
- 이분탐색
- 워크플로
- Unity
- 내일배움캠프
- 해시
- Inventory
- Unity3d
- Photon
- 언리얼엔진
- UnrealEngine
- 유클리드호제법
- 순열
- 알고리즘
- FSM
- 포톤
- UE4
- 스파르타내일배움캠프
- 문자열
- 스파르타내일배움캠프TIL
- C++
- unityui
- Firebase
- 유니티
- 스택
- 구현
Archives
- Today
- Total
개발 낙서장
[프로그래머스][수학][JAVA] 콜라 문제 본문
문제 제목
https://school.programmers.co.kr/learn/courses/30/lessons/132267
풀이 방법
이건 알고리즘이라기보단 수학 문제가 맞는 것 같다.😅
콜라병 n개가 있고 마트에서는 a개당 b개의 새 콜라를 준다고 한다.
콜라는 전부 마시는 것을 전제로 하기 때문에 새 콜라 또한 결국 빈 콜라병이 된다.
따라서 계속 나누면서 해답을 찾아나가면 된다.
예를 들어 현재 15개의 콜라병을 갖고 있는데 마트에선 3개당 2개의 새 콜라를 준다고 해보자.
- 15개를 내고 10개의 콜라병을 받는다.
- 10개 중 9개의 콜라병을 내고 6개의 콜라병을 받으니 7개가 된다.
- 7개 중 6개의 콜라병을 내고 4개의 콜라병을 받으니 5개가 된다.
- 5개 중 3개의 콜라병을 내고 2개의 콜라병을 받으니 3개가 된다.
- 마지막으로 3개의 콜라병을 내 2개의 콜라병을 받는다.
그럼 총 10 + 6 + 4 + 2 + 2 = 24개의 콜라병을 받게 된다.
소스 코드
더보기
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;
}
}
'Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스][알고리즘][JAVA] 2016년 (0) | 2024.01.03 |
---|---|
[프로그래머스][자료구조][JAVA] 명예의 전당 (1) (0) | 2024.01.02 |
[프로그래머스][문자열][JAVA] 푸드 파이트 대회 (0) | 2023.12.28 |
[프로그래머스][효율][C++] 달리기 경주 (0) | 2023.08.03 |
[프로그래머스][반복][C#] 마법의 엘리베이터 (0) | 2023.01.12 |
Comments