1日1AL: 대회 or 인턴(백준 2875)

Beautify.log·2021년 12월 21일
0

Coding Test Collections

목록 보기
1/10
post-thumbnail

대회 or 인턴

문제


백준대학교에서는 대회에 나갈 때 2명의 여학생과 1명의 남학생이 팀을 결성해서 나가는 것이 원칙이다. (왜인지는 총장님께 여쭈어보는 것이 좋겠다.)

백준대학교는 뛰어난 인재들이 많아 올해에도 N명의 여학생과 M명의 남학생이 팀원을 찾고 있다. 대회에 참여하려는 학생들 중 K명은 반드시 인턴쉽 프로그램에 참여해야 한다. 인턴쉽에 참여하는 학생은 대회에 참여하지 못한다.

백준대학교에서는 뛰어난 인재들이 많기 때문에, 많은 팀을 만드는 것이 최선이다.

여러분은 여학생의 수 N, 남학생의 수 M, 인턴쉽에 참여해야하는 인원 K가 주어질 때 만들 수 있는 최대의 팀 수를 구하면 된다.

입력


첫째 줄에 N, M, K가 순서대로 주어진다. (0 ≤ M ≤ 100, 0 ≤ N ≤ 100, 0 ≤ K ≤ M+N),

출력


만들 수 있는 팀의 최대 개수을 출력하면 된다.

풀이

각 값을 입력받아서 여학생 2명, 남학생 1명이 한팀이 되는 조건과
인턴십에 참여해야 할 k명의 인원에 대해 조건을 붙여줍니다.

이 때, 대회에 참여해야 하는 인원 즉 여학생 + 남학생으로 만들 수 있는 팀의 수는 인턴십에 참여해야하는 사람의 수보다 많아야 할 것입니다.

이 때 여학생은 두명씩 빠지므로 -2씩, 남학생은 -1씩
이렇게 빠진 학생으로 팀을 만들어주므로 팀은 하나씩 증가할 것입니다.

Python

import sys
input = sys.stdin.readline

n, m, k = map(int, input().split())
team = 0

while n >= 2 and m >=1 and n+m >= k+3:
    n -= 2
    m -= 1
    team += 1
print(team)

inputsys모듈로 선언해준 이유는 다음 링크에서 확인할 수 있습니다.
https://github.com/hjun-park/Coding-test-self-study/issues/1

각 값을 입력받고 조건에 맞게 반복을 해줍니다.

Java8

import java.io.*;

public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String[] inputValues = br.readLine().split(" ");

        int n = Integer.parseInt(inputValues[0]);
        int m = Integer.parseInt(inputValues[1]);
        int k = Integer.parseInt(inputValues[2]);

        int res = 0;
        while(n >= 2 && m >= 1 && m+n >= k+3) {
            n -= 2;
            m -= 1;
            res += 1;
        }
        br.close();
        System.out.println(res);
    }
}

공백을 두고 값을 입력받기 때문에 BufferedReader를 써서 공백을 구분으로 값을 읽어주고 이는 객체이 때문에 Integer.parseInt()로 숫자로 바꿔줬습니다.


원본 : https://www.acmicpc.net/problem/2875

profile
tried ? drinkCoffee : keepGoing;

0개의 댓글