728x90
2875번: 대회 or 인턴
첫째 줄에 N, M, K가 순서대로 주어진다. (0 ≤ M ≤ 100, 0 ≤ N ≤ 100, 0 ≤ K ≤ M+N),
www.acmicpc.net
문제 풀이
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader( new InputStreamReader(System.in) );
StringTokenizer st = new StringTokenizer( br.readLine() );
int n = Integer.parseInt( st.nextToken() ), m = Integer.parseInt( st.nextToken() ), k = Integer.parseInt( st.nextToken() );
br.close();
int t, r; // cnt team, num remain
if( n == 0 || m == 0 )
t = 0;
else {
t = Math.min( n/2 , m );
r = (n+m) - (t*3); // 전체 인원 수 - 대회 나가는 인원 수
while( r < k ) {
t--;
r += 3;
}
}
System.out.println( t );
}
}
* 그리디
- 대회에 참가할 수 있는 팀의 개수( t )는 n/2와 m 중 작은 수가 된다
- 전체 인원( n - m )에서 대회에 참가하는 인원수( t * 3 )를 빼고 남은 인원( r = (n-m)-(t*3) )중에서 인턴십에 참가해야 한다
- 하지만 남은 인원이( r ) 반드시 인턴십에 참가해야 하는 k명보다 적으면 이미 대회에 나가기로 결성된 팀원들 중에서 충원해야 한다
반응형
'코딩 문제 풀기 ( Algorithm problem solving ) > 백준 온라인 저지 ( BOJ )' 카테고리의 다른 글
[백준(Baekjoon)][자바(java)] 10799 : 쇠막대기 / 스택 (0) | 2021.02.08 |
---|---|
[백준(Baekjoon)][자바(java)] 10610 : 30 / 그리디 (0) | 2021.02.08 |
[백준(Baekjoon)][자바(java)] 2873 : 롤러코스터 / 그리디 (0) | 2021.02.07 |
[백준(Baekjoon)][자바(java)] 1783 : 병든 나이트 / 그리디 (0) | 2021.02.07 |
[백준(Baekjoon)][자바(java)] 1744 : 수 묶기 / 그리디 (0) | 2021.02.07 |