[ MR 01. SWEA - 10200. 구독자 전쟁 ]

Making Routine Series : MR
01. SWEA : 10200. 구독자 전쟁

주말을 제외한 정말 하루에 하나씩 풀어보려고 하는 알고리즘!
벨로그 습관화도 들일겸 혼자 시리즈를 시작해보려고 합니다!

꾸준히 해보자...젭알...

언어 : Python / C++ 왔다 갔다 하는데 C++ 정착해보려고 합니다..!


문제

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

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

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

[ 입력 조건 ]

첫 번째 줄에 테스트 케이스의 수 T가 주어진다.
각 테스트 케이스의 첫 번째 줄에는 세 개의 정수 N (1 ≤ N ≤ 100), A, B (0 ≤ A, B ≤ N)이 공백 하나를 사이로 두고 순서대로 주어진다.

3
10 3 5
10 7 5
100 100 100

[출력]

각 테스트 케이스마다 ‘#x’(x는 테스트케이스 번호를 의미하며 1부터 시작한다)를 출력하고, P채널과 T채널 모두 구독하고 있는 사람의 수의 최댓값과 최솟값을 공백 하나를 사이로 두고 차례대로 출력한다.

#1 3 0
#2 5 2
#3 100 100

[ 내가 푼 답 ]

문제 분석을 했을 때
min, max 이용한 문제라는 걸 바로 캐치

for(int t = 1; t <= T; ++t)
    {
        int N, A, B;
        cin >> N >> A >> B;
         
        int max_both = min(A,B); //두 채널 모두 구독하는 사람 최대값 계산
        int min_both = max(0, A+B-N); // 두 채널 모두 구독하는 사람의 최소값 계산
          
        cout << "#" << t << " " << max_both << " " << min_both << endl; // 결과 출력 
 
    }

전체 코드는 아래 링크로👇🏻
[D3] 구독자 전쟁 - 10200


[ 후기 ]

난이도도 난이도지만 꾸준히 하고 싶어서 가볍게 시작해봤다..
실력 향상 목적도 있지만 습관 체화가 우선이어서 이 글을 보시는 분들이
딱히 도움이 안되실 수도 있습니다..!
저와 같이 루틴 만들기가 목적이시라면 같이 해봐요!!

profile
Challenging & Growing

0개의 댓글