반응형
SMALL
문제
풀이
using System;
using System.Collections.Generic;
using System.IO;
namespace BOJ4796
{
internal class Program
{
static string input;
static int L;
static int P;
static int V;
static int cnt;
static int sum;
static List<string> strNums = new List<string>();
static void Main(string[] args)
{
StreamReader sr = new StreamReader(Console.OpenStandardInput());
StreamWriter sw = new StreamWriter(Console.OpenStandardOutput());
while (true)
{
input = sr.ReadLine();
if (input == "0 0 0") { break;}
strNums.Add(input);
}
foreach (string str in strNums)
{
int[] temp = Array.ConvertAll(str.Split(), int.Parse);
L = Convert.ToInt32(temp[0]);
P = Convert.ToInt32(temp[1]);
V = Convert.ToInt32(temp[2]);
if (V % P < L)
{
cnt++;
sum = (V / P * L) + (V % P);
sw.WriteLine("Case {0}: {1}", cnt, sum);
}
else if (V % P >= L)
{
cnt++;
sum = (V / P * L) + L;
sw.WriteLine("Case {0}: {1}", cnt, sum);
}
}
sw.Flush();
sw.Close();
sr.Close();
}
}
}
결과창
수식을 먼저 생각해보면
최대 사용 가능 일자 =
P(김강산의 휴가일수)를 V(캠핑장 연속일수)로 나누어주고 나온 몫에 L(캠핑장 최대 이용가능 시간) 을 곱해주고 나머지를 더하기
를 해주면 최대 캠핑장을 사용할수 있는 날짜가 나온다
하지만 해당 수식을 이용하면 나머지 값이 L(캠핑장 최대 이용가능 시간) 값과 같거나 클때 문제가 생기는데 이때는
위의 수식에서 나머지 값 대신 L(캠핑장 최대 이용가능 시간)을 그대로 몫에 더해주면 된다.
인풋을 좀더 깔끔하게 받을수 있는 방법을 생각해보아야겠다. ( 코드에서는 스트링으로 먼저 받으면서 0 0 0 이 입력되기 전까지 받은 문자열을 문자열 리스트에 넣어주었고 해당 리스트를 돌며 리스트의 요소를 스플릿하여 미리 선언해둔 필드에 넣어줬는데 이게 조금 깔끔해보이지 않았다...)
반응형
LIST
'Algorithm > BOJ' 카테고리의 다른 글
[BOJ] 5524번 입실 관리 C# 문제 풀이 (0) | 2023.02.05 |
---|---|
[BOJ]11945번 뜨거운 붕어빵 C# 사용 풀이 (0) | 2023.02.05 |
[BOJ] 1343번 폴리오미노 - C# 사용 - 미해결 (0) | 2023.02.04 |
[BOJ] 2864 5와 6의 차이 c# 사용 풀이 (0) | 2023.02.01 |
[BOJ] 10162번 전자레인지 C# 사용 풀이 (0) | 2023.02.01 |