[Python] 백준 2457 공주님의 정원 풀이

지민·2022년 8월 21일
1
post-thumbnail
# PROBLEM - 공주님의 정원
# TIER - G3
# NUMBER - 2457
# DATE - 2022-08-21 00:03
# IDEA - 그리디 + 정렬 약간 회의실처럼 그리디하게 풀수 있습니다
# 날짜처리는 월*100 + 일 로 처리해주었습니다.

# flower = 꽃의 피고 지는 날짜
# date = (start, end)
# last_date = 제일 최근 심은 꽃의 정보
# temp_date = 반복을 도는 시점의 최적해인 꽃

import sys
input = sys.stdin.readline

N = int(input())
flower = []
last_start = 101
last_end = 301
temp_start = temp_end = count = 0

for i in range(N): # 입력부
    a, b, c, d = map(int, input().split())
    start = a * 100 + b
    end = c * 100 + d
    if start != end:
        flower.append((start, end)) 

flower.sort()

while last_end <= 1130 and count < 10000:  # 11/30 이상이 될 때 까지 최대 10000회 반복
    for i in range(N): # 끝까지 반복을 해가면서 조건에 가장 잘 맞는 날짜를 찾아줌
        if flower[i][0] <= last_end and \
            flower[i][1] > last_end and \
            flower[i][0] >= temp_start and \
            flower[i][1] >= temp_end: # temp_date를 추가해서 끝까지 반복 후 대입하는 방식으로 처리
                temp_start = flower[i][0] 
                temp_end = flower[i][1]  
    last_start = temp_start
    last_end = temp_end
    count += 1

if count == 10000: # 정답이 안나온 경우 (시작점 없는 이슈, 끊기는 이슈, 끝점 없는 이슈 등등..)
    print(0)
else:
    print(count)
profile
남들 개발 공부할 때 일기 쓰는 사람

0개의 댓글