[伯俊/Java]6236小遣い管理
条件
Nお金を受け取る日数.(1<= N <= 100,000 , Int)
Mは何回か金を引き出す.(1<= M <= N , Int)
ここで賢宇は正確にM号を選択するために、残った金額がその日使用した金額より多くても、残った金額は通帳に預けることができるので、countを以下の条件に設定すればよい.△M回未満であっても、条件が満たされていれば、残りの入金回数で行えばよい.
引き出しに使用する最小引き出し金額の最大数を指定します.
入力例
コード#コード#
import java.io.*;
import java.util.*;
public class Main {
static int N,M;
static int[] A;
static FastReader scan = new FastReader();
static StringBuilder sb = new StringBuilder();
static void input() {
N = scan.nextInt(); // 용돈 사용날의 수를 받는다.
M = scan.nextInt(); // 인출 횟수를 받는다.
A = new int[N + 1]; //index를 1부터 시작하기 위해 +1을 해준다.
for(int i =1;i<=N;i++){
A[i] = scan.nextInt();
}
}
static boolean findAns(int K) {
int sum =0 , cnt = 1; //
for(int j = 1;j<=N;j++) {
if(sum + A[j] > K){ // 돈이 부족하다면
cnt ++; // 출금횟수를 +1해주고
sum = A[j]; // sum에 대입
} else {
sum += A[j]; 출금금액에서 돈이 남는다면 그냥 sum에다가 더해주기만한다.
}
}
return cnt <= M; // 총 출금의 횟수가 이하인지 확인
}
static void find() {
int L = A[1], R = 1000000000, ans =0;
for(int i= 1;i<=N;i++) {
L = Math.max(L, A[i]); // 최소 출금 금액을 사용할 금액의 최대값으로 해준 // 다.
}
while(L<=R) {
int mid = (L + R) / 2;
if(findAns(mid)) {
ans = mid;
R = mid - 1;
} else {
L = mid + 1;
}
}
System.out.println(ans);
}
public static void main(String[] args) {
input();
find();
}
static class FastReader{
BufferedReader br;
StringTokenizer st;
public FastReader() {
br = new BufferedReader(new InputStreamReader(System.in));
}
public FastReader(String s) throws FileNotFoundException {
br = new BufferedReader(new FileReader(new File(s)));
}
String next() {
while(st == null || !st.hasMoreElements()) {
try {
st = new StringTokenizer(br.readLine());
} catch(IOException e) {
e.printStackTrace();
}
}
return st.nextToken();
}
int nextInt() {
return Integer.parseInt(next());
}
Long nextLong() {
return Long.parseLong(next());
}
double nextDouble(){
return Double.parseDouble(next());
}
String nextLine() {
String str = "";
try {
str = br.readLine();
}catch(IOException e) {
e.printStackTrace();
}
return str;
}
}
}
Reference
この問題について([伯俊/Java]6236小遣い管理), 我々は、より多くの情報をここで見つけました https://velog.io/@heetaeheo/백준Java-6236-용돈-관리テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol