[Bronze II] 대출 요청 - 16497

문제 링크

성능 요약

메모리: 108384 KB, 시간: 88 ms

분류

구현

제출 일자

2026년 04월 25일 22:04:59

문제 설명

도서관에서 어떤 책을 K권 보유하고 있고, 이 책에 대한 대출 관리를 담당하고 있는 관리인이 있다. 이 관리인은 월 별로 한 번씩 대출 요청 건들을 취합하여 처리한다. 한 예약 요청은 대출 날짜와 반납 날짜를 포함한다. 예를 들어 이번 달에 이 관리인 처리할 데이터(대출일, 반납일)는 다음과 같다.

  • (1, 2)
  • (3, 6)
  • (5, 8)

관리자는 이러한 대출 요청 정보를 바탕으로 해당 달의 대출 요청이 모두 수용 가능한지 불가능한지를 판단한다. 예를 들면 K=1일 때, 특정 책을 1권 보유 중이라면, 위와 같은 대출 요청이 들어오면 5일에 발생할 대출 요청이 수용 불가하게 된다. (3일에 대출된 책이 6일이 되어야 반납되기 때문)

도서 대출 요청 수용 여부를 판단할 수 있는 프로그램을 작성하시오. 모든 반납이 대출보다 먼저 이루어진다고 가정한다.

입력

첫째 줄에 대출 요청의 개수 N(1 ≤ N ≤ 100)이 주어진다. 둘째 줄부터 N개의 줄에 한 사람의 대출일과 반납일이 주어진다. 반납일은 대출일보다 항상 크며, 모든 날짜는 31보다 작거나 같은 자연수이다.

마지막 줄에 책의 개수 K(1 ≤ K ≤ 100)가 주어진다.

출력

도서 대출 요청이 모두 가능하면 1을 불가능하면 0을 출력한다.


💡 해결 방법

💻 코드

# 문제
# 도서관에서 어떤 책을 K권 보유하고 있고, 이 책에 대한 대출 관리를 담당하고 있는 관리인이 있다. 이 관리인은 월 별로 한 번씩 대출 요청 건들을 취합하여 처리한다. 한 예약 요청은 대출 날짜와 반납 날짜를 포함한다. 예를 들어 이번 달에 이 관리인 처리할 데이터(대출일, 반납일)는 다음과 같다. 
 
# (1, 2)
# (3, 6)
# (5, 8)
# 관리자는 이러한 대출 요청 정보를 바탕으로 해당 달의 대출 요청이 모두 수용 가능한지 불가능한지를 판단한다. 예를 들면 K=1일 때, 특정 책을 1권 보유 중이라면, 위와 같은 대출 요청이 들어오면 5일에 발생할 대출 요청이 수용 불가하게 된다. (3일에 대출된 책이 6일이 되어야 반납되기 때문)
 
# 도서 대출 요청 수용 여부를 판단할 수 있는 프로그램을 작성하시오. 모든 반납이 대출보다 먼저 이루어진다고 가정한다.
 
# 입력
# 첫째 줄에 대출 요청의 개수 N(1 ≤ N ≤ 100)이 주어진다. 둘째 줄부터 N개의 줄에 한 사람의 대출일과 반납일이 주어진다. 반납일은 대출일보다 항상 크며, 모든 날짜는 31보다 작거나 같은 자연수이다.
 
# 마지막 줄에 책의 개수 K(1 ≤ K ≤ 100)가 주어진다.
 
# 출력
# 도서 대출 요청이 모두 가능하면 1을 불가능하면 0을 출력한다.
 
# 예제 입력 1 
# 3
# 1 2
# 3 6
# 5 8
# 1
# 예제 출력 1 
# 0
# 예제 입력 2 
# 3
# 1 2
# 3 4
# 5 8
# 1
# 예제 출력 2 
# 1
# 예제 입력 3 
# 3
# 1 2
# 3 6
# 5 8
# 2
# 예제 출력 3 
# 1
 
 
import sys
input = sys.stdin.readline
 
 
n = int(input())
 
 
list1 = []
list2 = []
 
for _ in range(0, n):
    a, b = map(int, input().split())
    list1.append(a)
    list2.append(b)
    list1.sort()
    list2.sort()
 
 
 
books = []
 
 
 
while list1 and list2:
    while (list1 and list2) and (list1[0]  <  list2[0]):
        list1.pop(0)
        books.append(-1)
 
    while (list1 and list2) and (list1[0]  >=  list2[0]):
        list2.pop(0)
        books.append(+1)
 
if list1:
    for i in list1:
        books.append(-1)
    del list1
elif list2:
    for i in list2:
        books.append(+1)
    del list2
 
 
 
 
# print(books)
 
 
book = int(input())
 
for i in books:
    book += i
    if book < 0:
        print(0)
        quit()
 
print(1)