susinlee 님의 블로그

111. Last Person to Fit in the Bus 본문

코드카타/Pandas

111. Last Person to Fit in the Bus

susinlee 2025. 1. 19. 11:13

[문제]

https://leetcode.com/problems/last-person-to-fit-in-the-bus/description/

 

[풀이]

1. turn을 기준으로 정렬을 해준 후에

2. weight 열의 누적합을 구해서 새로운 컬럼을 생성한다.

3. 누적합이 1000이하인 행들만 필터링한 뒤 가장 마지막행을 가져와서 반환하면 

 

Pandas

import pandas as pd

def last_passenger(queue: pd.DataFrame) -> pd.DataFrame:
    queue.sort_values('turn', inplace=True)
    queue['cum_sum'] = queue.weight.cumsum()

    return queue[queue.cum_sum <= 1000].tail(1)[['person_name']]

 

SQL

SELECT
    person_name
FROM
(
    SELECT
        *
        , SUM(weight) OVER(ORDER BY turn) AS cum_sum
    FROM Queue
) sub
WHERE cum_sum <= 1000
ORDER BY cum_sum DESC
limit 1

'코드카타 > Pandas' 카테고리의 다른 글

113.  (0) 2025.01.20
110. Product Price at a Given Date  (0) 2025.01.18
109. Consecutive Numbers  (0) 2025.01.17
112. Count Salary Categories  (0) 2025.01.16
108. Triangle Judgement  (0) 2025.01.15