Coding Test/Programmers

[Lv.1] 콜라 문제 [프로그래머스_코딩테스트] [수학, 반복 계산] [25분]

whawoo 2025. 6. 2. 14:33
반응형

🔍 문제 요약

https://school.programmers.co.kr/learn/courses/30/lessons/132267

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

콜라를 마시고 빈병 n개를 가게에 가져다 주면 빈병 a개당 b개를 준다고 한다. 그럴 때 콜라 가게에서 받는 콜라의 병 개수를 합산한 결과를 반화하는 문제

🧠 나의 접근 방식과 시행착오

일단 n이 a보다 작아지는 순간까지 while을 돌린다. 그러고 n을 a로 나눈 몫과 나머지를 가지고 획득되는 콜라 병수 count를 더하고 새로 count 된 것과 나머지를 더해서 반복을 계속하는 문제. 문제 자체는 어렵지 않게 풀었던 문제지만 변수를 잘못 입력했다가 시간을 25분 모두 썼다.

using System;

public class Solution
{
    /// <summary>
    /// 콜라 문제
    /// https://school.programmers.co.kr/learn/courses/30/lessons/132267
    /// </summary>
    public int solution(int a, int b, int n)
    {
        int count = 0;

        while (n >= a)
        {
            var mok = n / a;
            int nam = n % a;
            int newAdd = mok * b;
            count += newAdd;
            n = newAdd + nam;
        }
        
        return count;
    }
}

/// <summary>
/// C# 7.3
/// </summary>
internal class Program
{
    public static void Main(string[] args)
    {
        var sl = new Solution();
        var abc1 = new []{ 2, 1, 20 };
        var abc2 = new[] { 3, 1, 20 };
        
        Console.WriteLine(sl.solution(abc1[0], abc1[1], abc1[2]));
        Console.WriteLine(sl.solution(abc2[0], abc2[1], abc2[2]));
    }
}

✅ 풀이 코드

풀이 자체는 피드백이 가독성에 대해서만 언급되어 가독성에 대해서 수정한 코드도 기록한다.

public int solution(int a, int b, int n)
{
    int total = 0;

    while (n >= a)
    {
        int exchange = n / a;
        int remain = n % a;
        int newCola = exchange * b;

        total += newCola;
        n = newCola + remain;
    }

    return total;
}

🔄 정리

반복문 While을 돌리는 경우 변수명을 임시로 막 짓는 경우가 있는데 이러면 가독성이 떨어져서 문제를 실수하기 쉬어진다. 그러니 최대한 이해하기 쉬운 용어로 해서 개발을 하자

반응형