오늘 공부한 내용 정리(2024년 5월 15일)
1. 코드카타 문제풀이
A. 콜라 문제
문제 내용
문제 풀이 방법
- 빈 병 a개를 가져다주면 콜라 b병을 받을 수 있다.
- 빈 병 n개가 주어졌을 때, 받을 수 있는 콜라의 개수를 구한다.
- 20병이 주어지고 빈 병 2개에 콜라 1병일 때, 콜라 10병을 받고 다 마시면 빈 병 10개가 된다.
이 방법으로 계속 반복해서 총 받은 콜라의 개수를 구하는 문제이다.
해결 코드(스포 주의)
더보기
// 빈 병 a개를 가져다주면 콜라 b개를 준다.
// 빈 병 n개를 주었을 때, 받을 수 있는 콜라의 개수.
// 반복
fun solution(a: Int, b: Int, n: Int): Int {
var answer: Int = 0
var emptyBottle = n
while (emptyBottle >= a) {
// 마트에서 받는 콜라의 양
val coke = (emptyBottle / a) * b
// 받는 콜라의 수만큼 answer에 추가.
answer += coke
// 식 (emptyBottle % a)을 사용해 emptyBottle에서 마트에 전달하고 남은 빈 병의 개수를 계산할 수 있음.
// emptyBottle에 coke(다 마시고 빈 병이 됨)와 남은 빈 병의 개수를 더한 새로운 값으로 변경해줌.
emptyBottle = coke + (emptyBottle % a)
}
return answer
}
풀이 과정
- coke 변수는 마트에서 받는 콜라의 양이 된다.
- 받은 콜라의 수만큼 answer에 추가한다.
- emptyBottle은 현재 남은 빈 병의 개수를 뜻한다. emptyBottle % a를 하게 되면 마트에 전달하고(a * n개) 남은 빈 병의 개수를 알 수 있다.
emptyBottle = 20이고, a = 3일 때, 20 % 3 = 2가 된다. 20개에서 18개를 사용해 콜라로 바꿀 수 있기 때문(3 * 6)이다. 콜라로 바꾸고 남은 빈 병의 개수는 2병이다. - 콜라를 받으면 다 마셔서 빈 병으로 바꾸기 때문에 coke에 emptyBottle % a를 더해서 새로운 emptyBottle값을 적용한다.
- 위의 과정을 emptyBottle이 a보다 작아질 때까지 반복한다.
while (emptyBottle >= a)
간단 정리
- 빨간 날이라서 프로그래머스 문제 1개만 풀었다(콜라 문제에서 시간이 너무 많이 끌렸다 ㅠ).
- 문제 이해는 어렵지 않았지만, 무슨 이유에서인지 채점할 때 테스트 2개가 계속 실패로 떠서 시간을 많이 잡아먹혔다.
728x90
'♞ | 공부일지 > ♝ | TIL' 카테고리의 다른 글
[Android, 내일배움캠프] 공부일지(2024-05-17) (0) | 2024.05.17 |
---|---|
[Android, 내일배움캠프] 공부일지(2024-05-16) (0) | 2024.05.16 |
[Android, 내일배움캠프] 공부일지(2024-05-14) (0) | 2024.05.14 |
[Android, 내일배움캠프] 공부일지(2024-05-13) (0) | 2024.05.13 |
[Android, 내일배움캠프] 공부일지(2024-05-12) (0) | 2024.05.12 |