🌞Algorithm/🔥Baekjoon

[Baekjoon] 31307_Lines Per Hour

뿌야._. 2025. 1. 7. 16:20
문제(출처: https://www.acmicpc.net/problem/31307)

< Lines Per Hour >

 

문제 풀이 

 

loc를 입력받아 오름차순으로 정렬 후 합이 5*lph 이하일 때까지 가능한 개수를 구한다.

 

 

 my solution (Java)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class _31307_ { // Lines Per Hour

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(bf.readLine());
        
		int n = Integer.parseInt(st.nextToken());
		int x = Integer.parseInt(st.nextToken()) * 5;
        
		int arr[] = new int[n];
		for (int i = 0; i < n; i++) {
			arr[i] = Integer.parseInt(bf.readLine());
		}
        
		Arrays.sort(arr);
        
		int sum = 0;
		boolean flag = false;
		for (int i = 0; i < n; i++) {
			sum += arr[i];
			if (sum > x) {
				System.out.println(i);
				flag = true;
				break;
			}
		}
        
		if (!flag) {
			System.out.println(n);
		}
	}
}
변수)
n, x : 후보 수, 5시간 동안 처리할 수 있는 양
arr : loc
sum : 합

 

n과 lph를 입력받아 5시간 동안 처리할 수 있는 양을 x에 저장한다. n만큼 loc를 입력받아 배열에 저장하고 배열을 오름차순으로 정렬한다. 배열의 합을 구하면서 합이 x를 초과했을 때 더한 개수를 출력한다.