반응형
코딩하기 전 생각하기
/*
a, b, c를 입력 받는다.
손익분기점을 n이라고 하자.
c * n이 a + b * n 보다 크게되는 n의 값을 찾아야한다.
n이 커질 수록 c * n과 a + b * n의 간격이 작아지면 손익분기점이 있는것이고
아니면 없는것이다.
즉, c가 b보다 커야 손익분기점이 있다.
*/
코드
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main() {
long a, b, c, n = 0;
cin >> a >> b >> c;
if ( b >= c ) {
cout << -1;
return 0;
}
/* 1st try
while ( c * n <= a + b * n ) {
n++;
}
cout << n;
*/
cout << a/(c-b) + 1;
}
느낀점
쉬워 보이지만 반복문을 사용하였더니 시간제한으로 인해 실패하였다. 정답 비율이 낮은 이유가 있었다.
인터넷에서 조언을 구하여 n을 반복문 없이 바로 구하는 방법을 알 수 있었다.
양변을 n에 대해서 정리하면 a/(c-b) < n 식이 나오고, 이 식을 만족하는 첫번째 n은 좌항에 1을 더한 값이다.
(주의) 기록용으로 작성한 글입니다. 코드가 허접하거나 알고리즘의 효율이 낮을 수 있습니다.
댓글 환영합니다!
반응형
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준/BOJ] 2163번 - 초콜릿 자르기 (C++) (0) | 2021.07.12 |
---|---|
[백준/BOJ] 1476번 - 날짜 계산 (C++) (0) | 2021.07.12 |
[백준/BOJ] 2775번 - 부녀회장이 될테야 (C++) (0) | 2021.07.11 |
[백준/BOJ] 3052번 - 나머지 (C++) (0) | 2021.07.11 |
[백준/BOJ] 10757번 - 큰 수 A+B (파이썬) (1) | 2021.07.11 |
댓글