[λ°±μ€] C 16μΌμ°¨ (μμ΅λΆκΈ°μ #1712λ²) μκ°μ΄κ³Ό ν΄κ²°
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;
}