백준 문제풀이
1712번 문제 : 손익분기점
문제 :
소스코드 :
#include <iostream>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int a, b, c;
cin >> a >> b >> c;
// a + bx < cx
// a < (c-b)x
// 따라서 a / (c-b) < x , x값이 손익분기점
// x는 양수이다. 따라서 b>=c 면 손익분기점이 존재하지 않는다.
int result;
if ( b >= c ) {
result = -1;
}
else {
result = (a / (c - b)) + 1;
}
cout << result;
return 0;
}
2292번 문제 : 벌집
문제 :
소스코드 :
#include <iostream>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n;
cin >> n;
// 2~7까지 1번, 8~19까지 2번, 20~37까지 3번 건너가야 한다.
// 7, 19, 37, ... 규칙 찾으면 해결
// 1 + 6*1 , 7 + 6*2, 19 + 6*3 ...
// c=1은 i=1, c=7까지 i=2, c=37까지 i=3
int i = 0;
if (n == 1) i = 1;
for(int c=1; c<n; i++) {
c += 6 * i;
}
cout << i;
return 0;
}
1193번 문제 : 분수찾기
문제 :
풀이 :
소스코드 :
#include <iostream>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
// 1. 입력받은 수와 몇 번째 대각선인지 이용해 문제 해결하기
// i번째 대각선은 i개의 원소를 가지고 있다
int x;
cin >> x;
int i = 1; // i번째 대각선
// 2. 입력받은 x가 홀수 대각선인지 짝수 대각선인지 파악
while(x > i) { //ex) x가 8일 경우
x = x - i; // (x, i) = (7, 2), (5, 3), (2, 4)
i++; // 즉, 4번째 대각선(i=4)의 2번째 위치(x)를 구하면 된다.
}
// 3. 홀수 대각선과 짝수 대각선을 나눠서 원소 값 출력
if (i % 2 == 1) {
cout << i - x + 1 << "/" << x;
}
else {
cout << x << "/" << i - x + 1;
}
return 0;
}
2869번 문제 : 달팽이는 올라가고 싶다
문제 :
소스코드 :
// 시간 초과로 오답인 소스 코드 입니다.
#include <iostream>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int a, b, v;
cin >> a >> b >> v;
// ax - b = v , ax = b + v , x = (b+v) / a
int i = 1;
// 1. v에서 a를 뺀다. v-a <= 0일 경우 막대에 올라갔다는 것
// 2. v-a >=0이 아닐 경우 b를 더한다. 이를 반복한다.
while (v > a) {
v = v - a;
v = v + b;
i++;
}
cout << i;
return 0;
}
헐.. 반복문을 썼더니 시간이 초과되어버렸다.
괜히 시간 제한 조건이 있는게 아니였다.
그래서 다시 작성했다.
#include <iostream>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int a, b, v;
cin >> a >> b >> v;
int i = 0;
// 1. v-a <= 0이 되는 순간 막대를 올라간 것이다.
// 먼저 v에서 a를 빼준다. 그리고 나중에 +1 한다.
// 2. (v-a) 에다가 (a-b)를 나눈 몫을 구한다.
// 나머지가 있을 경우 + 1
if ((v-a) % (a-b) == 0) {
i = i + (v-a) / (a-b);
}
else {
i = i + (v-a) / (a-b) + 1;
}
cout << i + 1;
return 0;
}
'C++ 코딩테스트 공부 (중단) > c++ 백준 문제풀이' 카테고리의 다른 글
#8 기본 수학2 - 1 (0) | 2022.04.05 |
---|---|
#7 기본 수학1 - 2 (0) | 2022.04.04 |
#6 문자열2 (0) | 2022.03.31 |
#6 문자열1 (0) | 2022.03.28 |
#5 함수 (0) | 2022.03.27 |