프로그래밍/프로그래머스
Lv1_[콜라 문제, C++] 알고리즘 정리 - 프로그래머스
워킹독
2022. 11. 3. 22:54
728x90

문제 내용, 조건, 예시는 프로그래머스 사이트 참조
이 문제는 예제 풀이에 자세히 나와 있기 때문에 알고리즘을 작성해주면 된다.
1) 빈병 a개를 주면 콜라 b개를 주기 때문에 교환비는 a:b가 되고 콜라를 얻는 수는 빈병 곱하기 교환비다. (n/a)로 정수를 뽑아주고 곱하기 b를 해주면 된다. (n/a)*b
2) 교환비에 맞지 않게 남은 공병은 별도로 기억해둔다 (n%a)
3) 얻은 콜라는 마셔서 공병으로 만들어서 남은 공병이랑 같이 더해서 다시 1) 반복
(n = gain_cokeEA + have_left_EmptyCokeEA)
4) 얻은 콜라 수가 a보다 작아질 때 (a>n) 종료한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | int solution(int a, int b, int n) { int answer = 0; while(true) { if(a > n) { break; } int gain_cokeEA = ((n / a) * b); int have_left_EmptyCokeEA = (n % a); answer += gain_cokeEA; cout << "gain_cokeEA : " << gain_cokeEA << endl; cout << "have_left_EmptyCokeEA : " << have_left_EmptyCokeEA << endl; cout << "remain_cokeEA : " << gain_cokeEA + have_left_EmptyCokeEA << endl << endl; n = gain_cokeEA + have_left_EmptyCokeEA; } return answer; } | cs |
동작 시간은 특별한 것이 없기 때문에 빠르게 넘어갔다.

무언가 특별한 규칙을 찾아보려했지만 그러지 못하였다

↓↓↓↓↓↓ 유익했다면 하트 뿅 ♥ ↓↓↓↓↓↓
728x90
반응형