알고리즘/BOJ
[Python] 백준 9576: 책 나눠주기
PIAI
2021. 9. 17. 18:27
https://www.acmicpc.net/problem/9576
9576번: 책 나눠주기
백준이는 방 청소를 하면서 필요 없는 전공 서적을 사람들에게 나눠주려고 한다. 나눠줄 책을 모아보니 총 N권이었다. 책이 너무 많기 때문에 백준이는 책을 구분하기 위해 각각 1부터 N까지의
www.acmicpc.net
1. scope의 scope[1]을 기준으로 정렬한다. 책의 앞번호부터 나눠주기 위함이다. (만약 뒤에서부터 나누어주면 7 8
8 8 이런식으로 값이 들어오면 ans 는 1이된다. 이것때문에 틀렸다.)
2. find 함수로 책을 나눠줬으면 다음 인덱스의 책으로 이동한다.
3. 책을 나누어줄 범위를 벗어나면 ans값을 올리지 않는다.
T = int(input())
def find(x):
if x > b:
return -1
if x == unf[x]:
unf[x] += 1
return x
else:
tmp = find(unf[x])
if tmp != -1:
unf[x] = tmp
return unf[x]
else:
return -1
while T:
T -= 1
ans = 0
n, m = map(int, input().split())
unf = [i for i in range(n+1)]
scope = [list(map(int, input().split())) for _ in range(m)]
scope.sort(key=lambda x: (x[1]))
for a, b in scope:
if find(a) != -1:
ans += 1
print(ans)