Computer/Algorithm

Daily Algorithm - 제 2회 IUPC는 잘 개최될 수 있을까?

kentakang 2018. 2. 20. 01:45
반응형

문제

2016년 5월 28일 제 2회 인하대학교 프로그래밍 경시대회(IUPC)가 개최된다. 이 대회는 다른 프로그래밍 경시대회와 다르게  손코딩으로 문제를 풀어야한다. CTP회장인 정은이는 모든 대회 참가자들에게 펜을 지급하기 위하여 펜을 구하기로 하였다. 대회 개최를 위한 예산을 아끼기 위하여 펜을 구매하지 않고 CTP회원들에게 펜을 빌리기로 하였다.

CTP에는 N명의 회원들이 존재하며 각각의 회원들의 필통에 들어있는 펜의 개수는 모두 다르다. 정은이는 여러명의 회원에게 펜을 빌릴경우 펜을 돌려주기에 번거롭다고 생각하여 최소한의 회원들에게 펜을 빌려 참가자들에게 나누어 주려고 한다.

대회에 참가하는 참가자들은 팀을 구성해서 참가하는데 모든 팀원에게 펜을 지급해야한다. 한 팀이 k명의 팀원으로 구성되어 있을때 몇 명의 회원들에게 펜을 빌려야하는지 출력하시오.

입력

입력의 첫 줄에는 CTP의 회원수 N(1 ≤ N ≤ 1,000)이 주어진다.

둘째 줄에는 대회에 참가한 팀의 수 M(1 ≤ M ≤ 1,000)과 팀을 구성하는데 필요한 팀원의 수 K(1 ≤ K ≤ 10)가 주어진다.

셋째 줄에는 각각의 CTP 회원들이 가지고 있는 펜의 수 A(0 ≤ A ≤ 100)가 공백을 구분으로 주어진다.

출력

정은이가 최소한의 회원들에게 빌리려고 할 때, 빌린 회원의 수를 출력한다. 만약 펜이 부족한 경우 "STRESS"(따옴표는 제외)를 출력한다.

예제 입력

7

36 3

9 70 15 13 19 20 11

예제 출력

3

풀이

package boj12788;

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));
int n = Integer.parseInt(br.readLine());
StringTokenizer st1 = new StringTokenizer(br.readLine(), " ");
int m = Integer.parseInt(st1.nextToken()) * Integer.parseInt(st1.nextToken());
StringTokenizer st2 = new StringTokenizer(br.readLine(), " ");
int arr[] = new int[n];
int cnt = 0;
int sum = 0;

for (int i = 0; i < arr.length; i++) {
arr[i] = Integer.parseInt(st2.nextToken());
}

for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - 1; j++) {
if (arr[j] < arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}

for (int i = 0; i < arr.length; i++) {
sum += arr[i];
}

if (sum < m)
System.out.println("STRESS");
else {
while (m > 0) {
m -= arr[cnt];
cnt++;
}

System.out.println(cnt);
}
}
}


문제 출처 : https://www.acmicpc.net/problem/12788



반응형