728x90
반응형
https://www.acmicpc.net/problem/2170
처음 작성한 아이디어 :
시작 기준으로 정렬 후 low, high 값을 저장하면서 차이를 계산해나가는 방식.
75퍼에서 틀림 발생
n = int(input())
arr = []
for i in range(n):
a, b = map(int, input().split())
arr.append([a,b])
arr.sort() #시작 기준 정렬
cnt = arr[0][1]-arr[0][0]
low = arr[0][0]
high = arr[0][1]
for i in range(1, n):
if arr[i][0] > low and arr[i][1] > high and high > arr[i][0]:
cnt += arr[i][1] - high
high = arr[i][1]
low = arr[i][0]
elif arr[i][0] > high and arr[i][1] > high:
cnt += arr[i][1] - arr[i][0]
high = arr[i][1]
low = arr[i][0]
print(cnt)
아
같을때 설정 안했었다. ^^;;
import sys
input = sys.stdin.readline
n = int(input())
arr = []
for i in range(n):
a, b = map(int, input().split())
arr.append([a,b])
arr.sort(key=lambda x : (x[0],x[1])) #시작 기준 정렬
cnt = arr[0][1]-arr[0][0]
low = arr[0][0]
high = arr[0][1]
for i in range(1, n):
if arr[i][0] >= low and arr[i][1] >= high and high > arr[i][0]:
cnt += arr[i][1] - high
high = arr[i][1]
low = arr[i][0]
elif arr[i][0] >= high and arr[i][1] >= high:
cnt += arr[i][1] - arr[i][0]
high = arr[i][1]
low = arr[i][0]
print(cnt)
수정 후 정답
728x90
반응형
'알고리즘' 카테고리의 다른 글
[백준] 7576번: 토마토 - python (0) | 2024.04.02 |
---|---|
[백준] 2960번: 에라토스테네스의 체 - python (0) | 2024.04.02 |
[백준] 2292번: 벌집 - python (0) | 2024.04.02 |
[프로그래머스] 3월에 태어난 여성 회원 목록 출력하기 - sql (1) | 2024.04.01 |
[백준] 2667번: 단지번호붙이기 - python (0) | 2024.04.01 |