[백준, node.js] 2875번 "대회 or 인턴" 문제 해결방법

남양주개발자

·

2022. 2. 2. 18:06

728x90
반응형

[백준, node.js] 2875번 "대회 or 인턴" 문제 해결방법

문제

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

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

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

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

예제 입력 & 출력

입력

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

출력

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

소스코드

하나의 팀을 구성하기 위해서 여학생(N) 2명, 남학생(M) 1명이 필요하다. 팀을 구성하고 남은 인원이 인턴쉽에 참여하는 인원보다 작다면 팀을 만들 수 없다.

  • 여학생(n)이 2명 이하일 경우,
  • 남학생(m)이 1명 이하일 경우,
  • 팀 구성((여학생(n) + 남학생(m) - 3))한 나머지 학생 수가 인턴쉽에 참여할 k보다 작을 경우
const fs = require('fs');
let [n, m, k] = fs.readFileSync('./dev/stdin').toString().split(' ');
n = parseInt(n);
m = parseInt(m);
k = parseInt(k);
// 여학생의 수 N, 남학생의 수 M, 인턴쉽에 참여해야하는 인원 K

let count = 0;
while(true) {
  /**
   * 1. 여학생(n)이 2명 이하일 경우,
   * 2. 남학생(m)이 1명 이하일 경우,
   * 3. 팀 구성((여학생(n) + 남학생(m) - 3))한 나머지 학생 수가 인턴쉽에 참여할 k보다 작을 경우
   * 반복문 종료
   */
  if (n < 2 || m < 1 || n + m - 3 < k) {
    break;
  }

  n -= 2;
  m -= 1;
  count++;
}

console.log(count);
728x90
반응형
그리드형

💖 저자에게 암호화폐로 후원하기 💖

아이콘을 클릭하면 지갑 주소가자동으로 복사됩니다