문제 & 재정의
2457번: 공주님의 정원
첫째 줄에는 꽃들의 총 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 각 꽃이 피는 날짜와 지는 날짜가 주어진다. 하나의 날짜는 월과 일을 나타내는 두 숫자로 표현된다. 예를 들어서,
www.acmicpc.net
이전 글인 Greedy에서 상위/하위 호환 처리하기와 동일한 문제이다.
Day로 표현하기
일년을 365일이라 칭하는 것 처럼, 일 단위로 표현하는 방법.
month_per_day = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
def date_to_sum(month: int, day: int) -> int:
return sum(month_per_day[1:month]) + day
정수로 표현하기
날짜는 최대 31일, 2자리 수이다.
달을 100의 자리로 표현하고, 날짜를 더해 정수로 표현할 수 있다.
for _ in range(N):
date = list(map(int, input().split()))
flowers.append([date[0] * 100 + date[1], date[2] * 100 + date[3]])
'알고리즘' 카테고리의 다른 글
UnionFind와 순서 강제로 탐색하기 (0) | 2024.01.24 |
---|---|
PrefixSum 갱신 빠르게 하기 (0) | 2024.01.23 |
Greedy에서 상위/하위 호환 처리하기 (1) | 2024.01.22 |
DP 역추적 하기 (0) | 2024.01.22 |
Index로 상태 공간 정의하기 (0) | 2024.01.21 |