๊ฐ๋ฐ/๐๐ง๐ค๐๐ง๐๐ข๐ข๐๐ง๐จ
ํ๋ก๊ทธ๋๋จธ์ค ํ์๋ฒ(Greedy)'๋จ์์นด๋ฉ๋ผ' ํ์ด์ฌ ํ์ด
beomcoder
2023. 8. 30. 09:54
728x90
๋ฐ์ํ
https://school.programmers.co.kr/learn/courses/30/lessons/42884
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
def solution(routes):
order = []
for i, (s, e) in enumerate(routes):
order += [[s, 0, i], [e, 1, i]]
# ๋จผ์ ์ฐจ๋์ด ๋ค์ด์ค๋๊ฒ๊ณผ, ๋๊ฐ๋๊ฑธ ๊ตฌ๋ถ์์ผ์ฃผ๊ณ ๊ทธ ์ฐจ๋๋ค์ ์ธ๋ฑ์ค๊ฐ์ ๋ถ์ฌ์ฃผ์๋ค.
answer, pass_car, check = 0, [], []
for _, out, index in sorted(order):
if out:
# ๋๊ฐ๋ ์ฐจ๋์ด๊ณ , ์นด๋ฉ๋ผ์ check ๋์ง ์์ ์ฐจ๋์ด๋ผ๋ฉด
if index not in check:
answer += 1
check += pass_car
pass_car = []
# answer์ ์ถ๊ฐํ๊ณ , ์ง๊ธ๊น์ง ์ง๋๊ฐ ์ฐจ๋์ ์ฒดํฌ๋์๋ค๊ณ ํ์ํ๋ค.
# ๊ทธ๋ฆฌ๊ณ ๋ค์ ์ง๋๊ฐ ์ฐจ๋์ []์ผ๋ก ๋ง๋ค์ด์ค๋ค.
else:
pass_car.append(index)
# ๋ค์ด์ค๋ ์ฐจ๋์ด๋ผ๋ฉด pass_car์ ์ถ๊ฐํ๋ค.
return answer
'''
๊ณ ์๋๋ก๋ฅผ ์ด๋ํ๋ ๋ชจ๋ ์ฐจ๋์ด ๊ณ ์๋๋ก๋ฅผ ์ด์ฉํ๋ฉด์
๋จ์์ฉ ์นด๋ฉ๋ผ๋ฅผ ํ ๋ฒ์ ๋ง๋๋๋ก ์นด๋ฉ๋ผ๋ฅผ ์ค์นํ๋ ค๊ณ ํฉ๋๋ค.
๊ณ ์๋๋ก๋ฅผ ์ด๋ํ๋ ์ฐจ๋์ ๊ฒฝ๋ก routes๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋,
๋ชจ๋ ์ฐจ๋์ด ํ ๋ฒ์ ๋จ์์ฉ ์นด๋ฉ๋ผ๋ฅผ ๋ง๋๋๋ก ํ๋ ค๋ฉด
์ต์ ๋ช ๋์ ์นด๋ฉ๋ผ๋ฅผ ์ค์นํด์ผ ํ๋์ง๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํ์ธ์.
* ๋ค๋ฅธ ์ฌ๋๋ค์ ์์ฒญ ๊ฐ๋จํ๊ฒ ํ์๋๋ฐ ์ข ์ฝ๋๊ฐ ๋ฏผ๋งํ๊ธด ํ๋ค
'''728x90
๋ฐ์ํ