[Java] 백준 2875. 대회 or 인턴

정석·2024년 5월 23일

알고리즘 학습

목록 보기
50/67
post-thumbnail

🧑🏻‍💻 문제

💡문제 분석 요약

  • 여 2 / 남 1 로 팀을 만들어야 한다.
  • N 명의 여자, M 명의 남자가 있을 때 K 명은 팀에서 제외 된 후 팀을 만든다.
  • 팀을 만들 수 있는 최대 개수는?

💡알고리즘 설계

  • 우선 여자는 2명이상이어야 하며, 남자는 1명 이상이어야 한다.
  • 팀을 꾸린 후에 인턴쉽에 참가 할 K 명이 되는지도 확인해야한다.

💡코드

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()); // 여학생 수
        int M = Integer.parseInt(st.nextToken()); // 남학생 수
        int K = Integer.parseInt(st.nextToken()); // 인턴쉽에 참여해야 하는 학생 수

        // 팀을 구성할 수 있는 최대 수를 계산
        int cnt = 0;
        
        // 가능한 최대 팀 수를 구하는 반복문
        while (N >= 2 && M >= 1 && N + M >= K + 3) {
            N -= 2;
            M -= 1;
            cnt++;
        }
        
        System.out.println(cnt);
    }
}

💡시간복잡도

한 번의 반복문으로 O(N)

💡 틀린 이유

if 문으로 접근하다 로직이 복잡해져 예외가 발생했다.

💡 느낀점 or 기억할정보

그리디 알고리즘이 익숙치 않은 거 같다. 좀 더 많은 문제를 접해보자!

0개의 댓글