2023. 4. 7. 16:19ใCoding Test/BOJ
๐๋ฌธ์ ๋ณด๋ฌ๊ฐ๊ธฐ
๋ฌธ์ ์ค๋ช
๋
์์ ๋ฌํฝ์ด๊ฐ ์๋ค. ์ด ๋ฌํฝ์ด๋ ๋์ด๊ฐ 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;
}
'Coding Test > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ] 1018๋ฒ | ์ฒด์คํ ๋ค์ ์น ํ๊ธฐ (C++) (0) | 2023.04.13 |
---|---|
[BOJ] 10757๋ฒ | ํฐ ์ A+B (C++) (0) | 2023.04.08 |
[BOJ] 11404๋ฒ | ํ๋ก์ด๋ (Python3) (0) | 2022.09.15 |
[BOJ] 10610๋ฒ | 30 (Python3) (0) | 2022.07.20 |
[BOJ] 13305๋ฒ | ์ฃผ์ ์ (Python3) (2) | 2022.07.14 |