개발자 톡

연습문제 톡 GBC

python 정답이긴한데... 너무 복잡하게 한거같네요

등록일
2025-01-05 20:30:30
조회수
50
작성자
jcm5900

import sys

input=sys.stdin.readline

regulation_n,measure_n=map(int,input().split(" "))

regulation=[]

measure=[]

for i in range(regulation_n):

  regulation.append(list(map(int,input().split(" "))))

for i in range(measure_n):

  measure.append(list(map(int,input().split(" "))))


new_regul=[] #40 30 30, 이렇게 되있는걸 40 70 100이렇게

new_measure=[] #40 30 30, 이렇게 되있는걸 40 70 100이렇게

arr=[] #가능한 모든 구간을 다 범위의 height를 오름차순으로 나열하게금

tmp=0


for a, b in regulation:#40 30 30, 이렇게 되있는걸 40 70 100이렇게

  new_regul.append([tmp+a,b])

  arr.append(tmp+a)

  tmp+=a

tmp=0

for a, b in measure:#40 30 30, 이렇게 되있는걸 40 70 100이렇게

  new_measure.append([tmp+a,b])

  if tmp+a!=100:

    arr.append(tmp+a)

  tmp+=a

   

arr.sort()# 오름차순 정렬



dict=[]

idx_r=0 #규정 구간 인덱스

idx_m=0 #측정 구간 인덱스

for item in arr:

  if item==new_regul[idx_m][0] and idx_m<measure_n and item==new_measure[idx_r][0] and idx_r<regulation_n: #둘다 구간이 같은경우

    dict.append(max(0,new_measure[idx_r][1]-new_regul[idx_m][1]))

    #인덱스를 둘다올림

    idx_r+=1

    idx_m+=1

  else:

    if item==new_measure[idx_r][0] and idx_r<measure_n:#현재 측정된 구간인경우

      dict.append(max(0,new_measure[idx_r][1]-new_regul[idx_m][1]))

      #측정구간 인덱스 올리기

      idx_r+=1

    elif item==new_regul[idx_m][0] and idx_m<regulation_n:#규정된 구간인 경우

      dict.append(max(0,new_measure[idx_r][1]-new_regul[idx_m][1]))

      #규정구간 인덱스 올리기

      idx_m+=1

print(max(dict))


#GBC

이 카테고리의 톡 더보기