2024. 2. 17. 15:36ㆍPS (Program Solving)/BOJ (백준)
문제 설명
https://www.acmicpc.net/problem/5063
접근 방법 - 기초적인 사칙연산을 활용한 수학 문제
백준의 5063번 문제는 기초적 사칙연산을 통해 해결할 수 있는 수학적 문제이다.
해당 문제는, 광고 비용(c) 및 광고를 했을 때(e)와 안 했을 때(r)의 수익이 각 케이스마다 입력으로 주어질 때 광고를 해야 하는지를 정답으로 출력해야 하는 문제이다.
문제의 맥락을 잘 파악하였다면 매우 쉽게 식을 세우고 문제를 해결할 수 있었을 것이다.
필자 또한, r과 e-c의 값을 서로 비교하면서 정답을 출력하도록 코드를 구성하였다.
자세한 설명은 아래에 기재하니, 혹여나 해당 문제를 해결하는 데에 어려움을 겪고 있다면 아래의 설명과 코드를 참고해 보길 바란다.
필자는 아래의 순서대로 코드를 작성하여 문제를 해결하였다.
코드의 실행 순서
1) 테스트 케이스의 수(t)를 입력받는다.
2) t의 크기만큼, 반복문을 수행하여 아래의 연산을 취한다.
- 광고를 하지 않을 때 수익(a), 광고를 했을 때 수익(b), 광고 비용(c)을 순차적으로 입력받는다.
- a와 b-c의 값을 서로 비교한다.
2개의 값이 같다면, 광고를 해도 안 해도 상관이 없다는 것을 의미하기 때문에 "does not matter"를 출력한다.
b-c의 값이 더 크다면, 광고를 해야 한다는 것을 의미하기 때문에 "advertise"를 출력한다.
a가 더 크다면, 광고를 할 필요가 없다는 것을 의미하기 때문에 "do not advertise"를 출력한다.
3) 2)의 연산이 모두 완료되었다면, 실행 종료한다.
성공한 코드
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <iostream>
#define endl '\n'
using namespace std;
//백준 5063번 코드
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
int t;
cin >> t;
for (int i = 0; i < t; i++) {
int a, b, c;
cin >> a >> b >> c;
if (a == b - c) {
cout << "does not matter" << endl;
}
else if (a < b - c) {
cout << "advertise" << endl;
}
else {
cout << "do not advertise" << endl;
}
}
}
제출 결과
(2023.05.15 백준 5063번 문제 제출 결과)
'PS (Program Solving) > BOJ (백준)' 카테고리의 다른 글
[백준 BOJ] 27110번 특식 배부 (C++/cpp) (0) | 2024.03.02 |
---|---|
[백준 BOJ] 11441번 합 구하기 (C++/cpp) (1) | 2024.02.17 |
[백준 BOJ] 5523번 경기 결과 (C++/cpp) (1) | 2024.02.11 |
[백준 BOJ] 24313번 알고리즘 수업 - 점근적 표기 1 (C++/cpp) (1) | 2024.02.10 |
[백준 BOJ] 5704번 팬그램 (C++/cpp) (1) | 2024.02.10 |