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