Leetcode SQL50 (1204)

PocketopiΒ·2025λ…„ 4μ›” 17일

[MYSQL] Leetcode

λͺ©λ‘ 보기
11/34
post-thumbnail

🚌 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

πŸ’‘ 핡심 문법 및 배운 점

  • RECURSIVE CTE: SQL μž¬κ·€
  • LIMIT
profile
톡계학/컴퓨터곡학 전곡 4ν•™λ…„ 학생 DA뿌수기 일기μž₯

0개의 λŒ“κΈ€