코딩테스트 준비/SWEA
[JAVA][D3] 10200. 구독자 전쟁
AtoZ 개발자
2021. 3. 7. 23:12
반응형
문제
최근 어떤 동영상 플랫폼에서 P채널과 T채널이 구독자 수 1위를 놓고 치열한 경쟁을 벌이고 있다.
영은이는 자신의 주위 사람들은 어떤 채널을 구독하고 있을지 궁금해하여, N명의 사람들에게 아래 두 질문을 하였다.
- P채널을 구독하고 있나요?
- T채널을 구독하고 있나요?
그 결과, A명이 1번 질문에 ‘네’라고 답했고, B명이 2번 질문에 ‘네’라고 답했다.
이때, P채널과 T채널 모두 구독하고 있는 사람들이 최소 몇 명, 최대 몇 명인지 구하는 프로그램을 작성하라.
[입력]
첫 번째 줄에 테스트 케이스의 수 T가 주어진다.
각 테스트 케이스의 첫 번째 줄에는 세 개의 정수 N (1 ≤ N ≤ 100), A, B (0 ≤ A, B ≤ N)이 공백 하나를 사이로 두고 순서대로 주어진다.
[출력]
각 테스트 케이스마다 ‘#x’(x는 테스트케이스 번호를 의미하며 1부터 시작한다)를 출력하고,
P채널과 T채널 모두 구독하고 있는 사람의 수의 최댓값과 최솟값을 공백 하나를 사이로 두고 차례대로 출력한다.
예시
풀이
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
class Solution
{
public static void main(String args[]) throws Exception
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
for(int test_case = 1; test_case <= T; test_case++)
{
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken()); //총 인원수
int a = Integer.parseInt(st.nextToken()); //P 채널을 좋다고 한 사람
int b = Integer.parseInt(st.nextToken()); //T 채널을 좋다고 한 사람
int max = Math.min(a, b); //P채널과 T채널을 좋아한 사람들중 작은값이 곧 P채널,T채널 둘다 좋다고 한 사람들의 최대값
int min = a+b>n?a+b-n:0; //만약 P,T를 좋다고 한 사람들의 합이 총 인원수보다 작다면 0, 크다면 둘의 합에서 총인원수 n명을 뺀 값이 최소값이다.
System.out.println("#"+test_case+" "+max+" "+min);
}
}
}
반응형