-
BOJ) 대출 요청알고리즘/백준 2020. 6. 18. 18:12반응형
대출 요청
풀이
쉽게 풀 수 있는 문제였지만, 범위 설정에서 실수를 해줘서 수정을 했다.. ㅠ
일단, 주어진 날짜의 범위가 1~31일 사이이고 N과 K가 1~100 사이의 숫자기 때문에 날짜 배열을 통해 풀어주었다.
(가장 숫자가 적기도 하고, 날짜에 따른 대출 여부기 때문에, 적절하다고 생각한다.)
특정 날짜 인덱스에 최대한으로 필요한 책의 권수를 구하고, K 이하라면 대출 가능, 아니라면 불가능하다는 식으로 풀었다.
1일부터 31일까지 담을 수 있는 dateArr 배열을 선언해주고, N만큼 입력을 받으면서 대출 시작일인 start와 반납일인 end사이의 배열에 책 한권씩을 추가시켜준다.
이 때, 실수했던 것은 end에 해당하는 날짜까지 책을 추가시켜줬었는데, 만약 2일이 대출 반납일인 경우에 2일에 다른 사람이 이 책을 대출할 수 있다는 것을 발견하고, end 미만의 날짜까지만 추가해줬다.
start~end-1에 해당하는 날짜에 책 권수를 추가시켜주면서, max값을 구해주었다.
모든 입력이 끝나고, max값과 K값을 비교해서 경우에 따라 1과 0을 return했다.
코드
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class BookLoan_16497 { public static void main(String[] args) throws IOException { System.out.println(solution(new BufferedReader(new InputStreamReader(System.in)))); } private static int solution(BufferedReader br) throws IOException { int answer =0; int[] dateArr = new int[32]; int N = Integer.parseInt(br.readLine()); for(int i=0; i<N; i++) { StringTokenizer st = new StringTokenizer(br.readLine()); int start =Integer.parseInt(st.nextToken()); int end =Integer.parseInt(st.nextToken()); for(int idx = start; idx<end; idx++) { answer = Math.max(++dateArr[idx],answer); } } int K = Integer.parseInt(br.readLine()); return answer <=K ? 1 : 0; } }
반응형'알고리즘 > 백준' 카테고리의 다른 글
BOJ) 치킨 쿠폰 (0) 2020.06.22 BOJ) 욱제는 결정장애야!! (0) 2020.06.18 BOJ) 대회 개최 (0) 2020.06.18 BOJ) 방법을 출력하지 않는 숫자 맞추기 (0) 2020.06.18 BOJ) 양 한마리... 양 두마리... (0) 2020.06.18