[BOJ] 2869๋ฒˆ | ๋‹ฌํŒฝ์ด๋Š” ์˜ฌ๋ผ๊ฐ€๊ณ  ์‹ถ๋‹ค (C++)

2023. 4. 7. 16:19ใ†Coding Test/BOJ

๐Ÿ”—๋ฌธ์ œ ๋ณด๋Ÿฌ๊ฐ€๊ธฐ
 

2869๋ฒˆ: ๋‹ฌํŒฝ์ด๋Š” ์˜ฌ๋ผ๊ฐ€๊ณ  ์‹ถ๋‹ค

์ฒซ์งธ ์ค„์— ์„ธ ์ •์ˆ˜ A, B, V๊ฐ€ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋˜์–ด์„œ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ B < A ≤ V ≤ 1,000,000,000)

www.acmicpc.net

 

 

๋ฌธ์ œ ์„ค๋ช…

๋•… ์œ„์— ๋‹ฌํŒฝ์ด๊ฐ€ ์žˆ๋‹ค. ์ด ๋‹ฌํŒฝ์ด๋Š” ๋†’์ด๊ฐ€ V๋ฏธํ„ฐ์ธ ๋‚˜๋ฌด ๋ง‰๋Œ€๋ฅผ ์˜ฌ๋ผ๊ฐˆ ๊ฒƒ์ด๋‹ค.
๋‹ฌํŒฝ์ด๋Š” ๋‚ฎ์— A๋ฏธํ„ฐ ์˜ฌ๋ผ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ, ๋ฐค์— ์ž ์„ ์ž๋Š” ๋™์•ˆ B๋ฏธํ„ฐ ๋ฏธ๋„๋Ÿฌ์ง„๋‹ค. ๋˜, ์ •์ƒ์— ์˜ฌ๋ผ๊ฐ„ ํ›„์—๋Š” ๋ฏธ๋„๋Ÿฌ์ง€์ง€ ์•Š๋Š”๋‹ค.
๋‹ฌํŒฝ์ด๊ฐ€ ๋‚˜๋ฌด ๋ง‰๋Œ€๋ฅผ ๋ชจ๋‘ ์˜ฌ๋ผ๊ฐ€๋ ค๋ฉด, ๋ฉฐ์น ์ด ๊ฑธ๋ฆฌ๋Š”์ง€ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 


์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์„ธ ์ •์ˆ˜ A, B, V๊ฐ€ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋˜์–ด์„œ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ B < A ≤ V ≤ 1,000,000,000)

 


์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ๋‹ฌํŒฝ์ด๊ฐ€ ๋‚˜๋ฌด ๋ง‰๋Œ€๋ฅผ ๋ชจ๋‘ ์˜ฌ๋ผ๊ฐ€๋Š”๋ฐ ๋ฉฐ์น ์ด ๊ฑธ๋ฆฌ๋Š”์ง€ ์ถœ๋ ฅํ•œ๋‹ค.

 


์˜ˆ์ œ ์ž…์ถœ๋ ฅ

 


ํ’€์ด ์ „๋žต

๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•ด ๋‚ ์งœ๋ฅผ ํ•˜๋ฃจํ•˜๋ฃจ ์นด์šดํŠธํ•ด๊ฐ€๋ฉฐ ๊ณ„์‚ฐํ•ด๋ณผ ์ˆœ ์žˆ๊ฒ ์ง€๋งŒ, ๊ทธ๋Ÿฌ๋ฉด ์˜ˆ์ œ 3๋ฒˆ์—์„œ ๋ฐ”๋กœ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋‚  ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์ด ๋ฐ”๋กœ ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜ํ•™์ ์ธ ๋ฐฉ์ •์‹์„ ์„ธ์›Œ์„œ ๊ตฌํ•ด์•ผ๊ฒ ๋”๊ตฐ์š”.


์ œ๊ฐ€ ์ƒ๊ฐํ–ˆ๋˜ ๋ฐฉ๋ฒ•์€ ์ด๋žฌ์Šต๋‹ˆ๋‹ค. ์–ด์ฐจํ”ผ ๋ฐค์—” ๋ฏธ๋„๋Ÿฌ์ ธ ๋‚ด๋ ค๊ฐ€๊ธฐ์—, n๋ฒˆ์งธ ๋‚ ์— ๋‚ฎ ๋™์•ˆ ์˜ฌ๋ผ๊ฐ„ ๋†’์ด๋งŒ ๋ณด๋ฉด ๋˜๊ฒ ๋‹ค๊ตฌ์š”. n๋ฒˆ์งธ ๋‚ฎ ๋™์•ˆ ๋‹ฌํŒฝ์ด๊ฐ€ ์˜ฌ๋ผ๊ฐ„ ๋†’์ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

(n * ๋‚ฎ์— ์˜ฌ๋ผ๊ฐ€๋Š” A๋ฏธํ„ฐ) - (n - 1) * ๋ฐค์— ๋ฏธ๋„๋Ÿฌ์ง€๋Š” B๋ฏธํ„ฐ

 

์œ„ ์‹์„ ํ† ๋Œ€๋กœ, ์šฐ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ถ€๋“ฑ์‹์„ ์„ธ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ •์ƒ๋†’์ด <= (n * ๋‚ฎ์— ์˜ฌ๋ผ๊ฐ€๋Š” A๋ฏธํ„ฐ) - (n - 1) * ๋ฐค์— ๋ฏธ๋„๋Ÿฌ์ง€๋Š” B๋ฏธํ„ฐ

 

์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๊ฒ ์ง€์š”.

// ์ •์ƒ๋†’์ด : topHeight
// n๋ฒˆ์žฌ ๋‚  : days
// ๋‚ฎ์— ์˜ฌ๋ผ๊ฐ€๋Š” ๋†’์ด : climbingHeight
// ๋ฐค์— ๋ฏธ๋„๋Ÿฌ์ ธ ๋‚ด๋ ค์˜ค๋Š” ๋†’์ด : slipHeight

topHeight <= days * climbingHeight - (days - 1) * slipHeight;

 

์šฐ๋ฆฌ์˜ ๋ชฉ์ ์€ days๋ฅผ ๊ตฌํ•˜๋Š” ๊ฒƒ์ด๊ธฐ์—, ์œ„ ์‹์„ days๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ •๋ฆฌํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

1) topHeight <= days * climbingHeight - days * slipHeight + slipHeight;
2) topHeight - slipHeight <= days * (climbingHeight - slipHeight);

 

๋”ฐ๋ผ์„œ, ๋‹ค์Œ ์‹์œผ๋กœ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

(topHeight - slipHeight) / (climbingHeight - slipHeight) <= days;

 

์œ„ ์‹์— ๋Œ€์ž…ํ•˜์—ฌ ๋‚˜์˜จ days ๊ฐ’์„ ์†Œ์ˆ˜์  ์ฒซ์งธ์ž๋ฆฌ์—์„œ ์˜ฌ๋ฆผ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ๋ฉด ์ •๋‹ต์„ ๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 


์†Œ์Šค ์ฝ”๋“œ ๋ฐ ๊ฒฐ๊ณผ

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
	cin.tie(NULL);
	ios::sync_with_stdio(false);

	unsigned int topHeight;          // ์ •์ƒ ๋†’์ด(V๋ฏธํ„ฐ)
	unsigned int climbingHeight;     // ๋‚ฎ์— ์˜ฌ๋ผ๊ฐ€๋Š” A๋ฏธํ„ฐ
	unsigned int slipHeight;         // ๋ฐค์— ๋ฏธ๋„๋Ÿฌ์ง€๋Š” B๋ฏธํ„ฐ

	cin >> climbingHeight >> slipHeight >> topHeight;

	unsigned int days = 1;
    
    // ์†Œ์ˆ˜์ ๋„ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•ด ํ•œ ์ชฝ์„ ์‹ค์ˆ˜ํ˜•์œผ๋กœ
	double result = static_cast<double>((topHeight - slipHeight)) / (climbingHeight - slipHeight);
	days = static_cast<unsigned int>(ceil(result));

	cout << days;
	return 0;
}

 

728x90
๋ฐ˜์‘ํ˜•