백준 온라인 코딩 문제풀이
Baekjoon Online Judge
Baekjoon Online Judge 프로그래밍 문제를 풀고 온라인으로 채점받을 수 있는 곳입니다.
www.acmicpc.net
코드 참고
wny0320 (박 상운)
Run code live in your browser. Write and run code in 50+ languages online with Replit, a powerful IDE, compiler, & interpreter.
replit.com
2869에 대해서 다룸
2869
using System;
class Program
{
static void Main(string[] args)
{
string[] Input = Console.ReadLine().Split();
int[] Input_int = new int[Input.Length];
int result = 0;
for(int i = 0; i < Input.Length; i++)
{
Input_int[i] = Int32.Parse(Input[i]);
}
int a = Input_int[0];
int b = Input_int[1];
int v = Input_int[2];
Console.WriteLine((v-b-1)/(a-b)+1);
}
}
되게 많이 생각이 필요했던 문제
낮동안 올라가는 높이 = a, 밤동안 미끄러지는 높이 = b, 올라가야하는 높이 = v
우선 a-b로 v를 나누는 것까지 생각하는 과정은 쉬움
하지만 마지막에 올라가면 미끄러지지 않음
따라서 올라가야 하는 높이 v에 미끄러지는 높이 b를 빼고 a-b로 올라가고 미끄러지는 높이로 나눔
- 생각을 해보자, v를 구하는 과정은 v = a - b + a - b + ... +a - b +a로 끝남
-그렇다면 v에 -b를 하면 v - b = a - b + a - b + ... + a -b로 끝나게 됨
- 이렇게 한다면 규칙이 생기게 됨
(v-b) / (a-b) 를 하면 이제 몇 번 올라가는지 알 수 있게 됨
하지만 4 2 5와 같이 딱 나누어 떨어지지 않는 경우엔 1이 나오고 나머지는 버리게 됨으로 1을 더해야 함
(v-b)/(a-b) +1을 할 경우 딱 나누어 떨어지는 경우는 1이 추가가 되므로 v - b -1로 나누는 몫의 값이 하나 덜 나오게 수정해 줌
알고 보면 쉽지만 여기까지 생각하면서 풀이하기가 되게 까다로웠던것 같음
'BaekJoon[C#]' 카테고리의 다른 글
기본 수학 1단계 2839 (0) | 2022.10.20 |
---|---|
기본 수학 1단계 10250 (0) | 2022.10.12 |
기본 수학 1단계 2292 (0) | 2022.10.06 |
기본 수학 1단계 1712 (0) | 2022.10.05 |
문자열 단계 1316 (0) | 2022.10.04 |