카테고리 없음
6월 5일 TIL 회고록
tft4rollz
2023. 6. 5. 21:40
프로그래머스 Lv.1 코딩테스트
콜라 문제
문제 설명
제한사항 및 입출력 예
풀이
class Solution {
public int solution(int a, int b, int n) {
int answer = 0;
while (true) {
// 상빈이가 가지고 있는 빈 병의 개수와 마트가 받아야할 빈 병의 개수를 나누면
// 마트가 콜라를 주는 횟수가 나오게 된다.
int count = n / a;
// 남은 빈 콜라 수를 구한다.
n = n % a;
// 마트한테 받은 콜라의 개수를 구한다.
answer += b * count;
// 상빈이가 가지고 있는 콜라 병의 개수를 구한다.
n += b * count;
// 상빈이가 가지고 있는 빈 병의 개수보다 콜라를 받기 위해 마트에 주어야 하는 병 수가 더 많으면 while문을 종료한다.
if(n < a) {
break;
}
}
return answer;
}
}
while문을 사용해 true일때까지 반복문을 사용했습니다.
먼저 가지고 있는 빈 병의 개수와 마트에 주어야 하는 빈 병의 개수를 나누면 마트가 콜라를 주는 횟수가 나옵니다. 그 횟수를 int count에 담았습니다.
그 다음 남은 빈 콜라(병)의 수를 구해야 하므로 가지고 있는 빈 병의 개수와 마트에 주어야 하는 빈 병의 개수를 나눈 나머지 값을 가지고 있는 빈 병의 개수에 담았습니다.
마트한테 받은 콜라의 개수는 빈병 a개를 가져다주면 마트가 주는 콜라 병 수 b와 마트가 콜라를 주는 횟수인 count를 곱해서 answer에 담았습니다.
빈병 a개를 가져다주면 마트가 주는 콜라 병 수 b와 마트가 콜라를 주는 횟수인 count를 곱한 값을 가지고 있는 빈 병의 개수 n에 더해줍니다.
그 다음 if문을 사용하여 n < a (가지고 있는 빈 병의 개수보다 콜라를 받기 위해 마트에 주어야 하는 병 수가 더 많으면) 이면 while문을 종료시켰습니다.
콜라 문제를 두시간동안 붙잡고 있었다. 처음에 나도 모르게 b가 1일때인 경우만 고려하여 문제를 작성했더니 b가 1일 경우에만 통과되고 나머지는 전부 실패하여 멘붕이 왔었다.. 질문하기 게시판을 보면서 힌트를 얻어서 풀었다.
이제 레벨1도 전부 어려운 것만 남았다.. 문제 설명이 엄청 길어졌다 ㅋㅋㅋ...