본문 바로가기
백준

[백준] 5063번 : TGN – JAVA [자바]

by Hongwoo 2022. 8. 9.
반응형

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

 

5063번: TGN

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

www.acmicpc.net

 


  • 문제

 

 


  • 문제 풀이

백준 5063번 TGN은 브론즈 3 난이도의 수학 문제이다. 이 문제에서는 우선 테스트 케이스 개수 N이 주어진다. 그리고 N개의 줄에 걸쳐 r, c, e가 주어진다. 이때 r은 광고를 하지 않았을 때 수익, e는 광고를 했을 때의 수익, c는 광고 비용이다. 그리고 이때 광고를 해야 하면 "advertise", 하지 않아야 하면 "do not advertise", 광고를 해도 수익이 차이가 없다면 "does not matter"를 출력하면 된다.

 

이 문제는 간단하게 풀 수 있다. 우선 광고를 했을 때 이익을 살펴봐야 한다. 이것을 변수 dif라고 부르겠다. 즉, dif = e - c이고 이것은 광고 수익에서 광고 비용을 뺀 가격과 같다.

 

이 문제는 3개의 경우로 나눌 수 있다.

 

경우 1 : r > dif

만약에 광고를 하지 않았을 때의 수익이 광고했을 때의 이익보다 더 크면 광고를 당연히 하지 않는 게 더 좋으므로 "do not advertise"를 출력한다.

 

경우 2 : r = dif

만약에 광고를 하지 않았을 때의 수익이 광고했을 때의 이익과 같으면 광고를 하든 말든 상관없기 때문에 "does not matter"를 출력한다.

 

경우 3 : r < dif

만약에 광고를 하지 않았을 때의 수익이 광고했을 때의 이익보다 더 작으면 광고를 하는 게 더 좋으므로 "advertise"를 출력한다.

 

이것을 코드로 옮긴 소스 코드는 밑에 있다.

 


  • 코드

 

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());  //테스트 케이스 개수
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < n; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            int r = Integer.parseInt(st.nextToken());
            int e = Integer.parseInt(st.nextToken());
            int c = Integer.parseInt(st.nextToken());
            int dif = e - c;  //광고 수익 - 광고 비용
            if (r > dif) {
                sb.append("do not advertise\n");
            } else if (r == dif) {
                sb.append("does not matter\n");
            } else {
                sb.append("advertise\n");
            }
        }
        System.out.print(sb);
    }
}

 

 

반응형

댓글