Implementation_22_달력(20207)

Eugenius1st·2022년 5월 6일
0

Algorithm_Baekjoon

목록 보기
102/158

Implementation22달력(20207)

문제


입력

첫째 줄에 일정의 개수 N이 주어진다. (1 ≤ N ≤ 1000)
둘째 줄부터 일정의 개수만큼 시작 날짜 S와 종료 날짜 E가 주어진다. (1 ≤ S ≤ E ≤ 365)

출력

코팅지의 면적을 출력한다.

풀이

  • 증가 & 감소 배열을 만들어 푼다
  • 증감 배열 시작점에 1을, 끝나는 지점 다음을 -1로 더해준다
  • 증감 배열을 돌면서 높이를 계산
  • 높이가 0이 아니라면 너비룰 1더해주고 높이의 최대값을 구한다.
  • 높이가 0이라면 면적을 구한다

코드

N = int(input())

cale = [0]*367
arr = []

for _ in range(N):
    s,e = map(int,input().split())
    cale[s] +=1
    cale[e+1] -= 1
    
width = 0
height =0
answer = 0

for i in range(1,367):
    cale[i] += cale[i-1]
    if cale[i] ==0 :
        answer += width * height
        width = 0
        height = 0
    else:
        width +=1
        height = max(height, cale[i])
print(answer)
    
profile
최강 프론트엔드 개발자가 되고싶은 안유진 입니다

0개의 댓글