[백준 BOJ] 5063번 TGN (C++/cpp)

2024. 2. 17. 15:36PS (Program Solving)/BOJ (백준)

문제 설명

https://www.acmicpc.net/problem/5063

 

5063번: TGN

첫째 줄에 테스트 케이스의 개수 N이 주어진다. 다음 N개의 줄에는 3개의 정수 r, e, c가 주어진다. r은 광고를 하지 않았을 때 수익, e는 광고를 했을 때의 수익, c는 광고 비용이다. (-106 ≤ r,e ≤ 106

www.acmicpc.net

백준 BOJ 5063번 TGN 문제 사진

 

접근 방법 - 기초적인 사칙연산을 활용한 수학 문제

백준의 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;
        }
    }
}

 

제출 결과

백준 BOJ 5063번 TGN 문제 C++ 제출 결과

(2023.05.15 백준 5063번 문제 제출 결과)

반응형