-
[백준 2875번] 그리디 알고리즘Data Engineering/알고리즘 - Python 2021. 6. 27. 17:08
[ 백준 알고리즘 - 2875번 대회 or 인턴 ]
https://www.acmicpc.net/problem/2875
2875번: 대회 or 인턴
첫째 줄에 N, M, K가 순서대로 주어진다. (0 ≤ M ≤ 100, 0 ≤ N ≤ 100, 0 ≤ K ≤ M+N),
www.acmicpc.net
(오답)
n,m,k=map(int, input().split()) ans=0 for i in range(max(n,m,k)): n-=2 m-=1 if n==0 or m==0: if (n+m)>k: ans+=1 break else: break else: ans+=1 print(ans)
문제: 문제의 예제가 아닌 경우 오답이 발생한다.
(정답1)
n,m,k=map(int, input().split()) ans=0 while True: n-=2 m-=1 if n<0 or m<0 or (n+m)<k: break else: ans+=1 print(ans)
(정답2)
n,m,k=map(int, input().split()) ans=0 while n>=2 and m>=1 and (n+m-k)>=3: n-=2 m-=1 ans+=1 print(ans-1)
* 여학생 2명, 남학생 1명이 반드시 있어야 한다
* 여학생, 남학생, 인턴십 참여학생을 모두 보냈을 때 0명 이상이어야 한다.
<공부>
◾고쳐야 할 점: for 문을 무작정 사용하지 말고 while을 생각해보자.
◾while은 조건이 참일 경우에만 반복된다.
◾역 조건 지정할 때 부호 조심하자.
◾n < 0 or m < 0 or (n+m) < k ↔ n >= 0 and m >= 0 and (n+m) >= k