BaekJoon[C#]

기본 수학 1단계 2869

wny0320 2022. 10. 10. 21:20

백준 온라인 코딩 문제풀이

https://www.acmicpc.net/

 

Baekjoon Online Judge

Baekjoon Online Judge 프로그래밍 문제를 풀고 온라인으로 채점받을 수 있는 곳입니다.

www.acmicpc.net

 

코드 참고

https://replit.com/@wny0320

 

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