문제

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AXMCXV_qVgkDFAWv&categoryId=AXMCXV_qVgkDFAWv&categoryType=CODE

풀이

최초 풀이

최초에 경우 수를 잘못 나눴다.
최대값이 무조건 min(A,B)인 것 까진 좋았으나,
최소값이 3가지 케이스로 나뉜다고 파악했다.

오답
채점용 input 파일로 채점한 결과 fail 입니다.
(오답 : 1010개의 테스트케이스 중 989개가 맞았습니다.)

테스트케이스 적중률이 9할인걸 보고
경우의 수에 잘못 접근한걸 느껴서 최소값 경우수를 다시 정리했다.

정답 풀이

입출력 예제를 잘보면 규칙을 찾을 수 있다.

  • 최대값은 무조건 min(A,B).
  • 최소값은 두 케이스로 나뉜다.
    • (A+B) > N 이라면, (A+B)-N.
    • (A+B) <= N 이라면, 0.
T = int(input())
for test_case in range(1, T+1):
    N, A, B = map(int, input().split())

    if A+B > N:     # N보다 많으면 A+B - N
        print('#'+str(test_case), min(A,B), A+B-N)
    else:           # N과 같거나 작으면 0
        print('#'+str(test_case), min(A,B), 0)

댓글남기기