SMALL
https://www.acmicpc.net/problem/2839
2839번: 설탕 배달
상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그
www.acmicpc.net
- 문제
- 문제풀이
첫번째 줄에서 N을 받아 N이 0이 되도록 5와 3으로 나누고 카운트를 추가해준다. 만일 0으로 나누어 떨어지지 않는다면 -1을 출력하도록 한다.
※수정 최근 브루트포스 알고리즘을 배운 후 이 문제에 적용할 수 있음을 알게 되었다.
- 코드 1
namespace BaekJoon
{
internal class Program
{
static void Main(string[] args)
{
int N = int.Parse(Console.ReadLine());
int a = 0;
while (N > 0)
{
if (N % 5 == 0)
{
N -= 5;
a++;
}
else if (N % 3 == 0)
{
N -= 3;
a++;
}
else if (N > 5)
{
N-=5;
a++;
}
else
{
a = -1;
break;
}
}
if (a != 0)
{
Console.Write(a);
}
}
}
}
- 코드 2(브루트 포스 알고리즘)
using System;
class Program
{
static void Main(string[] args)
{
int n = int.Parse(Console.ReadLine()); // 입력값
int minCount = int.MaxValue; // 최소한의 봉지 개수를 저장할 변수, 최대값으로 초기화
for (int i = 0; i <= n / 3; i++) // 3kg 봉지의 개수
{
for (int j = 0; j <= n / 5; j++) // 5kg 봉지의 개수
{
int sum = 3 * i + 5 * j; // 사용한 봉지의 무게 합산
if (sum == n) // 정확히 nkg의 설탕을 배달한 경우
{
int count = i + j; // 봉지의 개수 계산
if (count < minCount) // 최소값 갱신
{
minCount = count;
}
}
}
}
if (minCount == int.MaxValue) // 봉지를 사용해도 정확히 nkg을 만들지 못한 경우
{
Console.WriteLine("-1");
}
else // 봉지를 사용하여 정확히 nkg을 만들었을 경우
{
Console.WriteLine(minCount);
}
}
}
- 후기
조건문을 잘 활용해야 풀 수 있는 것 같다.
LIST
'백준 > C#' 카테고리의 다른 글
[C#]백준 10872: 팩토리얼 (0) | 2023.03.15 |
---|---|
[C#]백준 10870: 피보나치 수 5 (0) | 2023.03.15 |
[C#]백준 2798번: 블랙잭 (0) | 2023.03.13 |
[C#]백준 1436번: 영화감독 숌 (0) | 2023.03.13 |
[C#]백준 2231번: 분해합 (0) | 2023.03.13 |