Greedy
๋ฌธ์ ์ด๋ค.
์ด๋ฒ ๋ฌธ์ ๋ ์ฝ๋ค๊ณ ์๊ฐํ๋๋ฐ,, ๊ณ์ ์ค๋ฅ๊ฐ ๋์ ๋ค๋ฅธ ๋ถ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํ๋ค.
# input
n = int(input())
inputArr = list()
for _ in range(n):
inputArr.append(list(map(int, input().split())))
# sorting
inputArr.sort(key=lambda x:(x[1], x[0]), reverse=True)
maxIdx, cnt, SUM = 0, 1, 0
for i in range(n):
if maxIdx < inputArr[i][0]:
maxIdx = inputArr[i][0]
if cnt <= maxIdx:
SUM += inputArr[i][1]
cnt += 1
print(SUM)
์ ๊ทผ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ด ํ์ต๋๋ค.
1) score
๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํ๊ณ , deadline
์ ๊ธฐ์ค์ผ๋ก ๋ค์ ๋ด๋ฆผ์ฐจ์์ ์ ๋ ฌํ๋ค.
2) ๊ฐ ์์๋ฅผ ์์๋๋ก ํ์ํ๋ฉฐ, ๊ฐ์ฅ ๊ธด dealine
์ ๊ณ์ ๊ธฐ๋กํ๋ค.
3) ๊ฐ์ฅ ๊ธด deadline
๋งํผ list
๋ฅผ ํ์ํด์ sum
์ ๋ํ๋ค.
์
์ถ๋ ฅ ์์๋ ์ ๋์์ง๋ง,,, ํ๋ ธ์ต๋๋ค
๊ฐ ๋ด์ต๋๋ค.
์์ธ๋ฅผ ์ฐพ์ ์๊ฐ ์์ด์ ๋ค๋ฅธ ๋ถ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํด์ ํ์์ต๋๋ค.
์ด ๋ฐฉ๋ฒ์ด ์ ํ๋ ธ๋์ง ์์ง๋ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค๐ฅ
# input
n = int(input())
inputArr = list()
for _ in range(n):
inputArr.append(list(map(int, input().split())))
# sorting
inputArr.sort(key=lambda x:(x[1], x[0]), reverse=True)
visit = [0] * (1001)
for x in inputArr:
idx = x[0]
while idx > 0:
if visit[idx] == 0:
visit[idx] = x[1]
break
idx -= 1
print(sum(visit))
1) ๋ฌธ์ ๋ณ๋ก ๊ณผ์ ์ ์๊ฐ ๋์์์ผ๋ก ์ ๋ ฌํ๋ค.
2) ๊ณผ์ ์ ์๊ฐ ๋์์์ผ๋ก ์ ๋ ฌ๋์์ผ๋ฉด, ๋ง๊ฐ์ผ์ด ๋ง์ด ๋จ์๊ฑด ๊ฐ์ฅ ๋ฆ๊ฒ ๋๋ด์ผํ๋ค.
๋ฐ๋ผ์, ๊ณผ์ ์ ์๊ฐ ๋์์์ผ๋ก ๋ง๊ฐ์ผ์ ์ต๋ํ ๊ฐ๊น๊ฒ ํ์์ ์ผ๋ก ๋ฃ์ด์ค๋ค.
์กฐ๊ฑด : d (1 โค d โค 1,000) ์ด๋ฏ๋ก visit list
์ length
๋ฅผ 1001
์ผ๋ก ์ค์ ํด์คฌ๋ค.
good