반응형
https://www.acmicpc.net/problem/2875
2875번: 대회 or 인턴
첫째 줄에 N, M, K가 순서대로 주어진다. (0 ≤ M ≤ 100, 0 ≤ N ≤ 100, 0 ≤ K ≤ M+N),
www.acmicpc.net
내 코드
import sys
input = sys.stdin.readline
ans =0
remain = 0
n, m, k = map(int, input().split())
#m의 수가 출전할 수 있는 최대 팀 수
if n < 2 or m<1:
ans =0
else:
if 2*m <= n: #여자가 같거나 많을 때
ans = team = m
remain = n-2*m #남은 여자 수
print(1, ans)
if remain < k:
k -= remain
team -= k//3
ans = team
print(2, ans)
elif 2*m > n: #남자가 더 많을 때
ans = team = n//2
remain = 2*m - n
print(3, ans)
if remain < k:
k -= remain
team -= k//3
ans = team
print(4, ans)
print(ans)
다른 사람의 풀이
import sys
input = sys.stdin.readline
ans =0
n, m, k = map(int, input().split())
#m의 수가 출전할 수 있는 최대 팀 수
while n>=2 and m>=1 and n+m >= k+3:
n-=2
m-=1
ans += 1
print(ans)
내 코드는 모든 조건을 따지면서, 그 조건에 맞으면 또 맞아야 하고 또 맞아야 하고... 의 반복이었다.
그런데 이 코드는 맞는 조건만 따지고, 맞는 조건만 추려내서 팀의 수를 셌다.
문제 자체가 조건에 해당하는 팀의 수를 세라는 것이니까 이렇게 풀면 된다는 것을 배웠다..
진짜 고생했는데, 역시 조금 더 다르게 생각해보자!
반응형
'코딩테스트 대비 > 백준(BOJ)' 카테고리의 다른 글
| [Python][백준/BOJ] 1010번 : 다리 놓기 (0) | 2023.06.23 |
|---|---|
| [Python][백준/BOJ] 5622번 : 다이얼 (0) | 2023.06.23 |
| [Python][백준/BOJ] 1094번 : 막대기 (0) | 2023.06.23 |
| [Python][백준/BOJ] 1049번 : 기타줄 (0) | 2023.06.23 |
| [Python][백준/BOJ] 16916번 : 부분 문자열 (0) | 2023.06.22 |