728x90
반응형
문제 1. 손익분기점
#include <iostream>
using namespace std;
int main() {
int a, b, c;
cin >> a >> b >> c;
int unit_profit = c - b;
if (unit_profit <= 0) {
cout << -1;
}
else {
cout << a / unit_profit +1 << endl;
}
return 0;
}
/*
* 반복으로 문제를 풀 경우 시간 초과 발생
*/
문제 2. 벌집
#include <iostream>
using namespace std;
int main() {
int a;
cin >> a;
for (int i = 1; true; i++) {
if (a == 1) {
cout << i;
break;
}
a -= (6 * i);
if (a <= 0) {
cout << i+1;
break;
}
}
return 0;
}
/*
* 각 껍질당 1 -> 6 -> 12 -> 18 ... 로 6 * i 형태로 올라감
* 입력 받은 수에서 6 * i 씩 감소시켜 몇 칸을 지나는지 알수있음
* , 1일 경우 출력 후 바로 종료
*/
문제 3. 분수찾기
#include <iostream>
using namespace std;
unsigned long long func_1193_sum_of_arithmetic_sequences(int n) {
return ( n * (n+1) ) / 2;
}
string func_1193_create(int n) {
// 입력받은 인덱스를 규칙을 기반으로 생성 (입력시마다 생성, 모든 수가 비슷한 시간)
// 규칙. 칸 수가 내려갈수록 1개씩 증가 1-> 2 -> 3 -> 4 ... 그리고 a/b 가 a는 증가, b는 감소
int lv, pos;
int a, b;
// 계층 구하기
for (int i = 0; i < 10000; i++) {
if (n <= func_1193_sum_of_arithmetic_sequences(i)) {
lv = i;
break;
}
}
// 계층과 차이나는 위치값 구하기
pos = n - func_1193_sum_of_arithmetic_sequences(lv);
// 시작지점의 값 설정
if (lv % 2 == 0) {
a = 1;
b = lv;
pos *= -1;
}
else {
a = lv;
b = 1;
}
// 차이나는 값 만큼 보정
a += pos;
b -= pos;
return to_string(b) + "/" + to_string(a);
}
int main() {
int a;
cin >> a;
cout << func_1193_create(a) << endl;
return 0;
}
문제 4. 달팽이는 올라가고 싶다
#include <iostream>
using namespace std;
int main() {
long long a, b, v, day;
cin >> a >> b >> v;
if (v <= a) {
day = 1;
}
else {
day = (v - b) / (a - b);
if ((v - b) % (a - b) > 0) {
day++;
}
}
cout << day << endl;
return 0;
}
문제 5. ACM 호텔
#include <iostream>
using namespace std;
int main() {
int a, h, w, n;
int f, no;
cin >> a;
for (int i = 0; i < a; i++) {
f = 1;
no = 1;
cin >> h >> w >> n;
f += (n % h) -1;
if (n % h == 0) {
f = h;
no = n / h;
}
else {
no += (n / h);
}
printf("%d%02d\n", f , no);
}
}
문제 6. 부녀회장이 될테야
#include <iostream>
using namespace std;
int func_2775_sum_people(int k, int n) {
if (k == 0) return n;
if (n == 1) return 1;
return func_2775_sum_people(k, n - 1) + func_2775_sum_people(k-1, n);
}
int main() {
int int_k, int_n, int_t;
cin >> int_t;
for (int i = 0; i < int_t; i++) {
cin >> int_k;
cin >> int_n;
cout << func_2775_sum_people(int_k, int_n) << endl;
}
return 0;
}
문제 7. 설탕배달
#include <iostream>
using namespace std;
int main() {
int a, b, n, min, tmp, res;
bool is_flag;
cin >> n;
min = n;
res = -1;
is_flag = false;
for (int a = 0; a < n; a++) {
for (int b = 0; b < n; b++) {
tmp = (3 * a) + (5 * b);
if (tmp > n) break;
if (tmp == n) {
if (min >= a + b) {
min = a + b;
is_flag = true;
}
}
}
}
if (is_flag) res = min;
cout << res << endl;
}
문제 8. 큰수 A+B
#include <iostream>
#include <vector>
using namespace std;
vector<int> func_10757_reverseVector(string num) {
vector<int> v;
for (int i = num.length() - 1; i >= 0; i--) {
v.push_back( (num[i] - '0'));
}
return v;
}
int main() {
string str_a, str_b;
cin >> str_a >> str_b;
vector<int> a, b, c;
int int_a, int_b, int_tmp = 0, int_len;
a = func_10757_reverseVector(str_a);
b = func_10757_reverseVector(str_b);
if (a.size() >= b.size()) {
int_len = a.size();
}
else {
int_len = b.size();
}
for (int i = 0; i < int_len; i++) {
try {
int_a = a.at(i);
}
catch (exception e) {
int_a = 0;
}
try {
int_b = b.at(i);
}
catch (exception e) {
int_b = 0;
}
c.push_back((int_a + int_b + int_tmp) % 10);
if ((int_a + int_b + int_tmp) >= 10) {
int_tmp = 1;
}
else {
int_tmp = 0;
}
}
if (int_tmp) {
c.push_back(1);
}
for (int i = c.size() - 1; i >= 0; i--) {
cout << c.at(i);
}
return 0;
}
문제 9. Fly me to the Alpha Centauri
#include <iostream>
#include <cmath>
using namespace std;
typedef unsigned long long ll;
int main() {
int int_case;
ll x, y;
ll res;
ll distance, level;
cin >> int_case;
for (int i = 0; i < int_case; i++) {
cin >> x >> y;
distance = y - x;
if (distance > 0 && distance <= 3) {
res = distance;
}
else {
level = (int)sqrt(distance);
if (((level + 1) * (level + 1)) - (level+1) < distance && distance < ((level + 1) * (level + 1))) {
res = 2 * level+1;
}
else if (distance == level * level ) {
res = 2 * level -1;
}
else {
res = 2 * level;
}
}
cout << res << "\n";
}
return 0;
}
결과
728x90
반응형
'코딩테스트 > 백준' 카테고리의 다른 글
[백준] 15965번 - K번째 소수 (실버 2) (0) | 2022.01.25 |
---|---|
[백준] 단계별로 풀어보기 > 재귀 (c++) (0) | 2022.01.25 |
[백준] 단계별로 풀어보기 > 기본 수학 2 (c++) (0) | 2022.01.19 |
[백준] 단계별로 풀어보기 > 문자열 (c++) (0) | 2022.01.15 |
[백준] 단계별로 풀어보기 > 함수 (c++) (0) | 2022.01.14 |
[백준] 단계별로 풀어보기 > 1차원 배열 (c++) (0) | 2022.01.14 |
댓글