[백준 2283번] 구간 자르기 - 골드2, 투포인터, 파이썬

밀루·2023년 3월 25일
0

백준 문제풀이

목록 보기
6/51

https://www.acmicpc.net/problem/2283

import sys


def main():
    A, B = map(int, sys.stdin.readline().split())
    vertical = [0] * 1000002
    
    for _ in range(A):
        left, right = map(int, sys.stdin.readline().split())
        for i in range(left+1, right+1): # 이 부분에 시간 초과가 있음
            vertical[i]+=1
            
    l, r, val = 0, 0, 0
    flag = False
    while l < 1000001 and r < 1000001:
        if val == B:
            flag=True
            break
        elif val < B:
            r += 1
            val += vertical[r]
        else:
            l += 1
            val -= vertical[l]
    
    if flag: print(l, r)
    else: print(0, 0)

main()
profile
벨로그에 틀린 코드나 개선할 내용이 있을 수 있습니다. 지적은 언제나 환영합니다.

0개의 댓글