πŸ’œ μ½”λ”©ν…ŒμŠ€νŠΈ/πŸ’œ λ°±μ€€

[λ°±μ€€] C 16일차 (손읡뢄기점 #1712번) μ‹œκ°„μ΄ˆκ³Ό ν•΄κ²°

eyes from es 2022. 12. 17. 19:33
728x90
λ°˜μ‘ν˜•

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. κ²°κ³Ό

728x90
λ°˜μ‘ν˜•