susinlee 님의 블로그
111. Last Person to Fit in the Bus 본문
[문제]
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 |