https://www.acmicpc.net/problem/1712
1712๋ฒ: ์์ต๋ถ๊ธฐ์
์๋์ ์๋ ๋ ธํธ๋ถ์ ์ ์กฐํ๊ณ ํ๋งคํ๋ ํ์ฌ์ด๋ค. ๋ ธํธ๋ถ ํ๋งค ๋์์ ์๊ด์์ด ๋งค๋ ์๋๋ฃ, ์ฌ์ฐ์ธ, ๋ณดํ๋ฃ, ๊ธ์ฌ ๋ฑ A๋ง์์ ๊ณ ์ ๋น์ฉ์ด ๋ค๋ฉฐ, ํ ๋์ ๋ ธํธ๋ถ์ ์์ฐํ๋ ๋ฐ์๋ ์ฌ๋ฃ๋น์
www.acmicpc.net
1. ๋ฌธ์
์๋์ ์๋ ๋ ธํธ๋ถ์ ์ ์กฐํ๊ณ ํ๋งคํ๋ ํ์ฌ์ด๋ค. ๋ ธํธ๋ถ ํ๋งค ๋์์ ์๊ด์์ด ๋งค๋ ์๋๋ฃ, ์ฌ์ฐ์ธ, ๋ณดํ๋ฃ, ๊ธ์ฌ ๋ฑ A๋ง์์ ๊ณ ์ ๋น์ฉ์ด ๋ค๋ฉฐ, ํ ๋์ ๋ ธํธ๋ถ์ ์์ฐํ๋ ๋ฐ์๋ ์ฌ๋ฃ๋น์ ์ธ๊ฑด๋น ๋ฑ ์ด B๋ง์์ ๊ฐ๋ณ ๋น์ฉ์ด ๋ ๋ค๊ณ ํ๋ค.
์๋ฅผ ๋ค์ด A=1,000, B=70์ด๋ผ๊ณ ํ์. ์ด ๊ฒฝ์ฐ ๋ ธํธ๋ถ์ ํ ๋ ์์ฐํ๋ ๋ฐ๋ ์ด 1,070๋ง์์ด ๋ค๋ฉฐ, ์ด ๋ ์์ฐํ๋ ๋ฐ๋ ์ด 1,700๋ง์์ด ๋ ๋ค.
๋ ธํธ๋ถ ๊ฐ๊ฒฉ์ด C๋ง์์ผ๋ก ์ฑ ์ ๋์๋ค๊ณ ํ๋ค. ์ผ๋ฐ์ ์ผ๋ก ์์ฐ ๋์๋ฅผ ๋๋ ค ๊ฐ๋ค ๋ณด๋ฉด ์ด๋ ์๊ฐ ์ด ์์ (ํ๋งค๋น์ฉ)์ด ์ด ๋น์ฉ(=๊ณ ์ ๋น์ฉ+๊ฐ๋ณ๋น์ฉ)๋ณด๋ค ๋ง์์ง๊ฒ ๋๋ค. ์ต์ด๋ก ์ด ์์ ์ด ์ด ๋น์ฉ๋ณด๋ค ๋ง์์ ธ ์ด์ต์ด ๋ฐ์ํ๋ ์ง์ ์ ์์ต๋ถ๊ธฐ์ (BREAK-EVEN POINT)์ด๋ผ๊ณ ํ๋ค.
A, B, C๊ฐ ์ฃผ์ด์ก์ ๋, ์์ต๋ถ๊ธฐ์ ์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
2. ์ ๋ ฅ
์ฒซ์งธ ์ค์ A, B, C๊ฐ ๋น ์นธ์ ์ฌ์ด์ ๋๊ณ ์์๋๋ก ์ฃผ์ด์ง๋ค. A, B, C๋ 21์ต ์ดํ์ ์์ฐ์์ด๋ค.
3. ์ถ๋ ฅ
์ฒซ ๋ฒ์งธ ์ค์ ์์ต๋ถ๊ธฐ์ ์ฆ ์ต์ด๋ก ์ด์ต์ด ๋ฐ์ํ๋ ํ๋งค๋์ ์ถ๋ ฅํ๋ค. ์์ต๋ถ๊ธฐ์ ์ด ์กด์ฌํ์ง ์์ผ๋ฉด -1์ ์ถ๋ ฅํ๋ค.
4. ๋ฌธ์ ํ์ด
1) ์๊ฐ์ด๊ณผ ์๋ฌ!

while๋ฌธ์ด๋ for๋ฌธ์ผ๋ก A=21์ต๋ฒ์ ๋๋ฉด ๋น์ฐํ ์๊ฐ์ด๊ณผ๊ฐ ๋๋ค. ์ปดํ์ผ์ ํ๋ฉด ์ถ๋ ฅ์ด ์๋ผ๋ ์ถ๋ ฅ๊น์ง ์๊ฐ์ด ์ข ๊ฑธ๋ ค์ ์๊ฐ์ด๊ณผ๊ฐ ๋ ๊ฑฐ๋ผ๋ ์์ด ์จ๋ค.
-> O(1) ์๊ฐ๋งํผ ๊ฑธ๋ฆฌ๋๋ก ์ง๋ณด์! (1์ด์ ์๊ฐ๋ง์ ํ๋ฆฌ๋๋ก)
2) ํด๊ฒฐ์ฑ
๋น์ฉ = A + (B *i)
์์ต = C * i
๋น์ฉ < ์์ต
=> A + (B * i) < C * i
์ด ์์ ์ ๋ฆฌํ๋ฉด A/(C-B) < i ์ธ i๋ฅผ ๊ตฌํด์ผ ํ๋ค.
C code
#include <stdio.h>
int main()
{
int A,B,C =0; //A: ๊ณ ์ ๋น์ฉ, B=๊ฐ๋ณ๋น์ฉ, C: ๋
ธํธ๋ถ ๊ฐ๊ฒฉ
scanf("%d %d %d",&A,&B,&C);
if( B >= C ) printf("-1\n");
else printf("%d\n",A/(C-B) +1);
return 0;
}
6. ๊ฒฐ๊ณผ
