문제 출처: www.acmicpc.net/problem/1712
1. 코드
#include <stdio.h>
int main(void)
{
long long A = 0, B = 0, C = 0, D = 1;
scanf("%lld %lld %lld", &A, &B, &C);
if(B >= C)
{
printf("-1");
return 0;
}
while(1)
{
if(A + B * D < C * D)
{
printf("%lld", D);
break;
}
D++;
}
return 0;
}
2. 문제 해결 방식
이 문제를 나는 단순하게 무한 반복문을 통해 해결하려고 했다. 그래서 손익분기점의 값을 변수 D로 생각하여 D를 점차 증가시켜서 조건문에 해당하는 D의 값을 출력하는 것이다.
3. 느낀 점
이렇게 풀었는데 계속해서 시간 초과가 나온다. 혹시 변수의 크기 문제인지 확인하기 위해 변수의 자료형을 int형에서 long long 형으로 바꿨지만 아닌 것 같다. 하루만 더 고민해보고 푸는 방식을 바꾸는 방식으로 고민을 하거나 다른 사람들이 풀어본 방식을 봐야할 것 같다.
문제 자체는 간단하지만 시간 제한이 있는 경우에는 많이 힘든 것 같다. 알고리즘 자체가 효율적으로 정확하게 풀어내는 것이 목적이자 목표여서 어쩔 수 없는 것 같다.
이 문제를 풀면서 드는 생각은 다른 방법이 없다는 생각밖에 안든다. 물론 나의 고정관념이겠지만 아직 나에게는 많이 어려운 것 같다.
'컴퓨터 > 백준 알고리즘' 카테고리의 다른 글
백준 알고리즘 2839번: 설탕 배달 C언어 (0) | 2020.01.12 |
---|---|
백준 알고리즘 1712번: 손익분기점 C언어 (개선) (0) | 2020.01.11 |
백준 알고리즘 1316번: 그룹 단어 체커 C언어 (0) | 2020.01.05 |
백준 알고리즘 2941번: 크로아티아 알파벳 C언어 (4) | 2020.01.03 |
백준 알고리즘 5622번: 다이얼 C언어 (0) | 2020.01.01 |