sugang
sugang'study
sugang
전체 방문자
오늘
어제
  • 분류 전체보기
    • [OS]
    • [취업정보]
    • [Server]
    • [Algorithm]
    • [Database]
    • [MyTravel]
    • [Network]

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • n

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
sugang

sugang'study

시간 복잡도 줄이는 기술 5. +1-1 technique
[Algorithm]

시간 복잡도 줄이는 기술 5. +1-1 technique

2024. 1. 5. 13:43

+1-1 Technique

N개의 선분을 2개의 시작, 끝 정점으로 나눠 각각 +1, -1 가중치를 줘서 x가 증가하는 순서대로 정렬하는 방법을 +1 -1 Technique

예시 - 수직선 상 겹치는 구간 

 

문제 - 가장 많이 겹치는 구간

일직선 위에 n개의 구간이 주어졌을 때, 구간이 가장 많이 겹치는 부분에서 몇 개의 구간이 겹치는지를 구하는 프로그램을 작성하세요.

아이디어

  • 먼저, 배열을 생성해서 선분이 있는 구간마다 1을 더해 최댓값을 구하는 식은 시간초과가 났다.
  • → 선분의 구간을 for로 돌며 1을 더하는 것이 문제
  • 선분의 시작점과 끝점에 +1,-1을 한다. 모든 점마다 겹치는 선분을 세줌

코드

n=int(input())

arr= [tuple(map(int,input().split())) for _ in range(n)]
arr.sort()
points=[0]*200001

for x1,x2 in arr:
    points[x1]+=1
    points[x2]-=1

ans=0
overlapped_cnt = 0
for x in range(1, 200001):
    overlapped_cnt += points[x]
    ans = max(ans, overlapped_cnt)

print(ans)

'[Algorithm]' 카테고리의 다른 글

시간 복잡도 줄이는 기술 4. LR 배열  (0) 2024.01.05
시간복잡도를 줄이는 기술 3. 전처리 - 숫자들의 합이 7의 배수  (0) 2024.01.02
시간 복잡도를 줄이는 기술 3. 전처리 - 최소 비용 배열 활용하여 최소 에너지 비용 구하기  (0) 2024.01.02
시간복잡도를 줄이는 기술 3. 전처리(1) - 뒤부터 탐색하며 채우는 R배열  (0) 2023.12.29
시간복잡도를 줄이는 기술 2. 좌표압축  (0) 2023.12.29
    '[Algorithm]' 카테고리의 다른 글
    • 시간 복잡도 줄이는 기술 4. LR 배열
    • 시간복잡도를 줄이는 기술 3. 전처리 - 숫자들의 합이 7의 배수
    • 시간 복잡도를 줄이는 기술 3. 전처리 - 최소 비용 배열 활용하여 최소 에너지 비용 구하기
    • 시간복잡도를 줄이는 기술 3. 전처리(1) - 뒤부터 탐색하며 채우는 R배열
    sugang
    sugang

    티스토리툴바