백준 6236 용돈 관리 JAVA

sundays·2023년 3월 8일
0

문제

용돈 관리

풀이

n일동안 사용할 돈을 m번 출금하여 사용할때 인출하여 사용할 금액을 구한다
사용하게 될 금액은 전부 사용하는 최대의 금액이거나
딱 한번 사용 할 가장 최소의 금액이다. 왜 사용하지 않는 경우가 아니라 딱 한번 사용할 금액이냐 하면 문제에서 주어져있는 m의 값이 1이상인 값이기 때문이다. 그리고 가장 적게 나올금액도 1이상이기 때문에 가장 적게 사용할 금액이 1인것이다.

int min = 1; // 가장 적게 인출 될 금액
int max = 0; // 가장 많이 인출 될 금액
for (int i = 0;i < n; i++) {
	money[i] = Integer.parseInt(br.readLine());
	max += money[i];
}

그리고 나서 용돈을 사용할때는 인출 금액보다 사용하게 될 금액이 크면 안된다, 그리고 사용하고 남은 금액보다 사용할 금액이 더 크면 인출 해야 한다. 이때 모든 금액을 다시 넣고 인출 해야 하기 때문에 초기화 하는 작업이 필수로 필요한것이다.

private static boolean isValid(int k) {
	int spend = k;
    // 인출을 해야 사용가능 하기 때문에 필수적으로 1부터 시작해주어야 한다
    int count = 1;
    
  	for (int i= 0; i < n; i++) {
    	// 사용해야 할 금액이 인출 금액보다 크면 안된다
    	if (k < money[i]) {
        	return false;
        }
        // 남은 금액보다 인출 금액이 크다면 모든 금액을 다시 넣고 인출해야 한다
        if (spend < money[i]) {
      		spend = k;
            count++;
        }
        spend -= money[i];
    }
    return m >= count;
}

전체 코드

전체 코드

profile
develop life

0개의 댓글