상근이가 배달해야 할 설탕의 무게가 주어진다.
상근이는 설탕을 3킬로 혹은 5킬로밖에 운반할 수 없다.
이때 상근이가 설탕을 배달할 수 있는 최소 운반 횟수를 출력하고, 배달이 불가능하다면 -1을 출력하면 된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
using System.IO;
using System.Text;
using System.Linq;
using System.Reflection.PortableExecutable;
namespace 연습장
{
internal class Program
{
static void Main(string[] args)
{
int sugar = int.Parse(Console.ReadLine());
int weight = 3;
int temp = 0;
int tot_cnt = 1;
bool found = false;
while(weight <= sugar && !found)
{
temp = weight;
for(int count = 0; count <= tot_cnt; count++)
{
if (weight == sugar)
{
Console.WriteLine(tot_cnt);
found = true;
break;
}
weight += 2;
}
weight = temp+3;
tot_cnt++;
}
if(!found)
Console.WriteLine("-1");
}
}
}
|
처음에 문제를 보고 어떻게 알고리즘을 짜야 할 지 고민했다.
하지만 고민은 사치였다. 왜냐면 이건 부르트포스 문제니까.
그냥 모든 경우의 수를 따져보면 되는 일이다.
그래도 수의 증가하는 경향을 따져보기 위해 대충 그림을 그려보았다.
그림을 그려보니 루프가 1회 반복될 때 마다 가장 낮은 무게가 전 루프의 가장 낮은 무게보다 3 증가하였다.
그리고 운반 가능한 무게는 2씩 증가하는 모습을 보여주었다.
그래서 가장 낮은 무게를 기억해두고, 루프를 돌며 2씩 더해주었다.
루프 종료 후 저장해둔 무게를 불러와 3을 증가시킨 후, 반복할 횟수를 1회 늘려주며 다음 루프를 준비해 주었다.
이렇게 루프를 돌며 입력받은 설탕의 무게와 루프 중 가능한 설탕의 무게가 일치한다면 해당 무게를 출력해 주고
루프를 완전히 빠져나와주었다. 하지만, 입력받은 설탕의 무게보다 루프 가능한 무게 중 가장 낮은 무게의 값이 더 크다면 루프를 종료하고 -1을 출력해 주었다.
'하루 한 접시' 카테고리의 다른 글
[백준] 1037 약수 [C#] (0) | 2024.03.25 |
---|---|
[백준] 14425 문자열 집합 [C#] (0) | 2024.03.25 |
[백준] 1018 체스판 다시 칠하기 [C#] (0) | 2024.03.24 |
[백준] 1764번: 듣보잡 [C#] (1) | 2024.03.24 |
[백준] 10816 숫자 카드 2 [C#] (1) | 2024.03.23 |