[문제 링크] 👇
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
풀이
💡 A + B 가 N 명 이상일 때와 이하일 때로 구분한다.
- A + B 가 N 명 이상이면 A + B 에서 N 을 뺀 게 최소가 된다.
- 이하이면 최소 구독자는 0이다.
- 최대 구독자는 동일하게 A, B 둘 중에 더 작은 값이 된다.
Solution
T = int(input())
for test_case in range(1, T + 1):
N, A, B = map(int, input().split())
if A + B > N:
sub_max = min(A, B)
sub_min = A + B - N
else:
sub_max = min(A, B)
sub_min = 0
print(f"#{test_case} {sub_max} {sub_min}")
수정 포인트
- 중복 코드 정리
- sub_max는 min(A, B)로 항상 같은 방식으로 계산되므로 if 문 바깥에서 한번만 계산해도 됩니다.
- 조건문 단순화
- sub_min을 계산할 때, A + B > N인 경우와 그렇지 않은 경우로 나누었으므로, if 문으로 sub_min을 직접 계산할 수 있습니다.
- 변수와 코드의 가독성 향상
- 변수 이름을 설명하는 주석을 추가하면 코드를 이해하기 쉽게 만들 수 있습니다.
수정한 코드
T = int(input())
for test_case in range(1, T + 1):
N, A, B = map(int, input().split())
# p와 t 채널 모두 구독하는 사람의 최대값은 두 구독자 수 중 작은 값
sub_max = min(A, B)
# p와 t 채널 모두 구독하는 사람의 최소값은 (A + B - N) 이상, 0 이하
sub_min = max(0, A + B - N)
print(f"#{test_case} {sub_max} {sub_min}")
👩💻 회고
사람 수 N 명이 주어진 걸 생각 못하고 풀었어서 처음엔 틀렸었다. 그래서 최대 최소를 어떻게 구하는건가,, 문제 설명이 훼이크인 거 아닌가 했었다.. 아침에 졸린 상태로 풀어서 잘 안 보인거라고 치자.
'SWEA' 카테고리의 다른 글
[SWEA] 1221. [S/W 문제해결 기본] 5일차 - GNS (Python/D3) (0) | 2024.10.26 |
---|---|
[SWEA] 3142. 영준이와 신비한 뿔의 숲 (Python/D3) (0) | 2024.10.26 |
[SWEA] 1209. [S/W 문제해결 기본] 2일차 - Sum (Python/D3) (0) | 2024.10.25 |
[SWEA] 14692. 통나무 자르기 (Python/D3) (0) | 2024.10.25 |
[SWEA] 1216. [S/W 문제해결 기본] 3일차 - 회문2 (Python/D3) (0) | 2024.10.25 |