반응형
🔍 문제 요약
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을 돌리는 경우 변수명을 임시로 막 짓는 경우가 있는데 이러면 가독성이 떨어져서 문제를 실수하기 쉬어진다. 그러니 최대한 이해하기 쉬운 용어로 해서 개발을 하자
반응형
'Coding Test > Programmers' 카테고리의 다른 글
[Lv.1] 약수의 개수와 덧셈 [프로그래머스_코딩테스트] [수학] [20분] (1) | 2025.06.04 |
---|---|
[Lv.1] 푸드 파이트 대회 [프로그래머스_코딩테스트] [구현] [20분] (0) | 2025.06.04 |
[Lv.1] 숫자 문자열과 영단어 [프로그래머스_코딩테스트] [문자열, 구현] [25분] (0) | 2025.06.02 |
[Lv.1] 두 개 뽑아서 더하기 [프로그래머스_코딩테스트] [Set, 정렬] [25분] (0) | 2025.05.31 |
[Lv.1] 최소직사각형 [프로그래머스_코딩테스트] [완전탐색, 정렬] [25분] (0) | 2025.05.30 |