[백준 31282] ЛОВНО КУЧЕ (C#, C++) - soo:bak
작성일 :
문제 링크
설명
토끼와 사냥개 사이 거리가 N이고, 한 번에 토끼는 M, 개는 K만큼 이동합니다. 매 점프마다 거리가 K−M씩 줄어들므로, 최소 몇 번의 점프로 거리가 0 이하가 되는지 구하는 문제입니다.
접근법
매 점프마다 개는 토끼보다 K - M만큼 더 이동하므로, 거리가 그만큼씩 줄어듭니다. 초기 거리 N을 이 차이로 나누면 필요한 점프 횟수를 알 수 있습니다.
나누어떨어지지 않을 경우 올림이 필요하므로, 정수 연산에서는 분자에 분모 - 1을 더한 뒤 나누면 됩니다.
Code
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
using System;
class Program {
static void Main() {
var parts = Console.ReadLine()!.Split();
var n = int.Parse(parts[0]);
var m = int.Parse(parts[1]);
var k = int.Parse(parts[2]);
var diff = k - m;
var jumps = (n + diff - 1) / diff;
Console.WriteLine(jumps);
}
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n, m, k; cin >> n >> m >> k;
int diff = k - m;
int jumps = (n + diff - 1) / diff;
cout << jumps << "\n";
return 0;
}