
π LeetCode - Last Person to Fit in the Bus
λ²μ€μ μ¬λλ€μ νμ°λ €κ³ νλ€. ν λ²μ ν μ¬λμ©λ§ ν μ μμΌλ©°,
μ΄ λ²μ€μ λ¬΄κ² μ νμ 1000kgμ΄λ€. λ§μ§λ§μ ν μ¬λμ μ΄λ¦μ μΆλ ₯νλΌ.
π ν΅μ¬ ν¬μΈνΈ
μμλλ‘ ν μ¬λμ© λμ 무κ²λ₯Ό λν΄κ°λ€.
λμ 무κ²κ° 1000kg μ΄νμΌ λκΉμ§λ§ μ¬λμ BUS ν μ΄λΈμ μΆκ°νλ€.
μ¬κ· CTE(WITH RECURSIVE)λ₯Ό μ¬μ©νμ¬ ν μ¬λμ© μ‘°κ±΄μ νμΈνλ©΄μ λμ κ³μ°.
WITH RECURSIVE BUS AS (
SELECT TURN, PERSON_NAME, WEIGHT, WEIGHT AS TOTAL_WEIGHT
FROM QUEUE
WHERE TURN = 1
UNION ALL
SELECT Q.TURN, Q.PERSON_NAME, Q.WEIGHT, Q.WEIGHT + B.TOTAL_WEIGHT
FROM QUEUE Q JOIN BUS B
ON Q.TURN = B.TURN + 1
WHERE B.TOTAL_WEIGHT + Q.WEIGHT <= 1000
)
SELECT PERSON_NAME
FROM BUS
ORDER BY TURN DESC
LIMIT 1