STUDY/algorithm with BOJ

[라인 스위핑]

officialhoyoon 2024. 7. 20. 20:51
contents dated
라인 스위핑 개념 
+ 백준 2017번 
2024.07.20

 

라인 스위핑(line Sweeping) 알고리즘은  

선 하나를 여러 가지 상황에서 움직이면서 문제를 해결하는 것이다.

 

즉 한 번만 전체 공간을 스캔하면서 마주치는 요소들에 대해 판단기준이 되는 기준을 적용해 주면 정답이 

정답이 구해지는 형태이다. 

 

정렬된 요소들을 한 번만 순회하면 연산 하면 정답이 나오는 구조 이다, 

 

 

backjoon 2107번

import sys
input = sys.stdin.readline

n = int(input())
lines = []

for _ in range(n):
    lines.append(tuple(map(int, input().split())))

lines.sort()

left = lines[0][0]
right = lines[0][1]
ans = 0

for i in range(1, n):
    if right >= lines[i][1]:
        continue
    
    elif lines[i][0] <= right < lines[i][1]:
        right = lines[i][1]
    
    elif right < lines[i][0]:
        ans += right - left
        left = lines[i][0]
        right = lines[i][1]

ans += right - left
print(ans)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

https://blogshine.tistory.com/120

https://velog.io/@songhaeunsong/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EB%9D%BC%EC%9D%B8-%EC%8A%A4%EC%9C%84%ED%95%91