[BOJ][๐ก5][๋ฐฑ์ค#06068] ์๊ฐ ๊ด๋ฆฌํ๊ธฐ
์์ฑ:    
์ ๋ฐ์ดํธ:
์นดํ ๊ณ ๋ฆฌ: BOJ Gold V
๋ฌธ์ ์ถ์ฒ
๋ฌธ์
์ฑ์คํ ๋๋ถ ์กด์ ์๊ฐ์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํด์ผ ํ๋ค๋ ๊ฑธ ๊นจ๋ฌ์๋ค. ๊ทธ๋ N๊ฐ์ ํด์ผํ ์ผ์ย (1<=N<=1000) ์ซ์๋ฅผ ๋งค๊ฒผ๋ค.ย (์ฐ์ ๋ฅผ ์ง๊ณ , ๋ง๊ตฟ๊ฐ์ ์น์ฐ๊ณ , ๋ด์ฅ์ ๊ณ ์น๋ ๋ฑ์) ์กด์ ์๊ฐ์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํด, ๊ทธ๋ ๋๋ด์ผ๋ง ํ๋ ์ผ ๋ชฉ๋ก์ ๋ง๋ค์๋ค. ์์ฑ๋ ๋ ํ์ํ ์๊ฐ์ T_i(1<=T_i<=1,000) ๋ผ๊ณ ํ๋ฉฐ, ๋๋ด์ผํ๋ ์๊ฐ์ S_i(1<=S_i<=1,000,000) ์ด๋ผ ํ๋ค. ๋๋ถ ์กด์ ํ๋ฃจ์ ์์์ t = 0์ผ๋ก ์ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ผ ํ ๋๋ ๊ทธย ์ผ์ ๋ง์น ย ๋ ๊น์ง ๊ทธ ์ผ๋ง ํ๋ค.ย ์กด์ ๋ฆ์ ์๋ ๊ฑธ ์ข์ํ๋ค. ๋ฐ๋ผ์ย ์ ์๊ฐ์ ๋๋ผ ์ ์๊ฒย ๊ฒฐ์ ํ ์ ์๋ ํ๋์์ย ์กด์ดย ๊ฐ์ฅ ๋ฆ๊ฒ ์ผ์ด๋๋ ๋๋ ์๊ฐ์ ์ถ๋ ฅํ๋ผ.
์ ๋ ฅ
์ฒซ ์ค์๋ ์ผ์ ๊ฐ์์ธ N์ ๋ฐ๊ณ ๋ ๋ฒ์งธ ์ค๋ถํฐ N+1์ค๊น์ง T_i์ S_i๋ฅผ ์ ๋ ฅ๋ฐ๋๋ค.ย
์ถ๋ ฅ
์กด์ด ์ผ์ ํ ์ ์๋ ๋ง์ง๋ง ์๊ฐ์ ์ถ๋ ฅ ํ๋ผ. ์กด์ด ์ ์๊ฐ์ ์ผ์ ๋๋ผ ์ ์๋ค๋ฉด -1 ์ ์ถ๋ ฅํ๋ผ.
์์
์ ๋ ฅ
4
3 5
8 14
5 20
1 16
์ถ๋ ฅ
2
My Sol
def main():
N = int(input())
Q = []
for _ in range(N):
t, e = map(int, input().split())
Q.append((e, t))
Q.sort()
tt = 0
ret = 1e8
for i in range(N):
e, t = Q[i]
if tt+t > e: return -1
tt += t
ret = min(ret, e-tt)
return ret
print(main())
์ ์๊ฐํ๋ฉด ๊ฐ๋จํ๊ฒ ํ์ด๋ผ ์ ์๋ ๋ฌธ์ ์๋ค.
- ๊ณผ์ ์ ์์์๊ฐ(t)๊ณผ ๋ง๊ฐ๊ธฐํ(e)๋ฅผ ์ ๋ ฅ๋ฐ์ Q์ ์ ์ฅํ๋ค.
- ์ด๋ฅผ ์ ๋ ฌํ๋ค.
- ๋ฐ๋ผ์ ๋ง๊ฐ๊ธฐํ์ด ๊ฐ์ฅ ์ผ๋ง ๋จ์ง ์์ ๊ณผ์ ๋ค๋ถํฐ ํ์ธํด์ 0์ผ๋ก ์ด๊ธฐํํ ํ์ฌ์๊ฐ์ ์์์๊ฐ์ ๋์ ํ๋ฉฐ ๋๊ฐ๋ค.
- ์ด๋ ์ด๋ ํ ๊ณผ์ ์์ ๋์ ์๊ฐ์ ๊ณผ์ ์์์๊ฐ์ ๋ํ์ ๋ ๋ง๊ฐ์๊ฐ์ ๋์ด๊ฐ๋ฒ๋ฆฐ๋ค๋ฉด ๋น์ฅ ์์ํด๋ ๊ณผ์ ๋ฅผ ๋๋ด์ง ๋ชปํ๋ฏ๋ก -1์ returnํ๋ค.
- ๊ฐ ๊ณผ์ ๋ง๋ค ๋์ ์๊ฐ์ ์์์๊ฐ์ ๋ํ ๊ฐ(tt)์ด ๋ง๊ฐ๊ธฐํ๋ณด๋ค ์ผ๋ง๋ ์์์ง ๋งค๋ฒ ํ์ธํ๋๋ฐ, ์ด ์ฐจ์ด ์ค ๊ฐ์ฅ ์์ ๊ฐ์ด ๊ฒฐ๊ณผ๊ฐ์ด ๋๋ค. ์๋ํ๋ฉด 0์ผ๋ก ์ด๊ธฐํํ๊ณ ๋ค๋ก ๋ฏธ๋ฃจ๋๋ฐ, ๋ชจ๋ ๊ณผ์ ๋ ๋ง๊ฐ๊ธฐํ ์์ ํด์ผํ๋ฏ๋ก ๊ทธ ์ต์ ์ฐจ์ด๋งํผ ๋ค๋ก ๋ฏธ๋ฃฌ๋ค๊ณ ์๊ฐํ๋ ๊ฒ์ด๋ค. ๊ทธ์ ๋ํ ์ ์ฐจ๋ฅผ ์์ฑํ๋ค.
- ์ด๋ฅผ ๋ฐํํ์ฌ ์ถ๋ ฅํ๋ค.
๊ฒฐ๊ณผ
๋ง์์ต๋๋ค!!
๋ชจ๋ฒ๋ต์
# empty
๋๊ธ๋จ๊ธฐ๊ธฐ