[Python] BOJ 12892번. 생일선물

12892번. 생일선물

문제 링크

풀이 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 12892번. 생일선물


import sys
input = sys.stdin.readline


n, d = map(int, input().split())
nList = [0 for i in range(n)]
for i in range(n):
    nList[i] = list(map(int, input().split()))
nList.sort()

idx = []
maxhappy = nList[0][1]
s = maxhappy  # 합을 바꿀 변수
j = 0
# sliding
for i in range(1, n):
    s += nList[i][1]
    while nList[i][0]-nList[j][0] >= d:
        s -= nList[j][1]
        j += 1
    maxhappy = max(maxhappy, s)  # 최대값 비교

print(maxhappy)

비고