SWEA 10200 구독자 전쟁 D3 (자바 Java)

SWEA 10200 구독자 전쟁

문제 정보

  • 문제 출처 : SW Expert Academy
  • 문제 번호 : 10200
  • 문제 제목 : 구독자 전쟁
  • 문제 난이도 : D3
  • 풀이 언어 : Java

문제

최근 어떤 동영상 플랫폼에서 P채널과 T채널이 구독자 수 1위를 놓고 치열한 경쟁을 벌이고 있다.
영은이는 자신의 주위 사람들은 어떤 채널을 구독하고 있을지 궁금해하여, N명의 사람들에게 아래 두 질문을 하였다.

    –  P채널을 구독하고 있나요?
    –  T채널을 구독하고 있나요?

그 결과, A명이 1번 질문에 ‘네’라고 답했고, B명이 2번 질문에 ‘네’라고 답했다.
이때, P채널과 T채널 모두 구독하고 있는 사람들이 최소 몇 명, 최대 몇 명인지 구하는 프로그램을 작성하라.

접근

Math 를 활용해 문제를 풀었다.

풀이

  • Scanner 객체를 사용하여 입력을 받습니다.
  • 첫 번째 입력 값 T는 테스트 케이스의 수입니다.
  • 각 테스트 케이스마다 N (전체 사람 수), A (P채널 구독자 수), B (T채널 구독자 수)를 입력 받습니다.
  • P채널과 T채널 모두 구독하지 않는 사람의 수가 최대가 되려면, A + B 값에서 N을 뺀 값이 음수가 되지 않도록 Math.max(0, A + B – N)로 최소값을 계산합니다.
  • P채널과 T채널을 모두 구독하는 사람의 최대값은 두 채널의 구독자 수 중 작은 값과 같습니다. 따라서 Math.min(A, B)를 사용하여 최대값을 계산합니다.
  • 각 테스트 케이스마다 결과를 형식에 맞게 출력합니다.

후기

어렵지 않게 해결한 문제

코드

Java
import java.util.Scanner;
import java.io.FileInputStream;
 
class Solution
{
    public static void main(String args[]) throws Exception
    {
        Scanner sc = new Scanner(System.in);
        int T;
        T=sc.nextInt();
 
        for(int test_case = 1; test_case <= T; test_case++)
        {
            int N = sc.nextInt();
            int A = sc.nextInt();
            int B = sc.nextInt();
 
            int minSubscribers = Math.max(0, A + B - N);
 
            int maxSubscribers = Math.min(A, B);
 
            System.out.println("#" + test_case + " " + maxSubscribers + " " + minSubscribers);
        }
    }
}
Java

Leave a Comment