본문 바로가기
♞ | 공부일지/♝ | TIL

[Android, 내일배움캠프] 공부일지(2024-05-15)

by immgga 2024. 5. 15.
오늘 공부한 내용 정리(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