[문제]

https://school.programmers.co.kr/learn/courses/30/lessons/178871

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

[풀이]

1. 효율성을 고려해야 하는 문제이므로 리스트에 인덱스로 접근하여 값을 변경해주어야 한다.

2. 딕셔너리를 통해 인덱스를 저장하고, 저장된 값을 수정해주면서 리스트에 인덱스로 접근해 순위를 바꿔준다.

 

from collections import defaultdict

def solution(players, callings):
    rank = defaultdict(int)
    for i, player in enumerate(players):
        rank[player] += i

    for call in callings:
        idx = rank[call]
        rank[call] -= 1
        rank[players[idx-1]] += 1
        players[idx], players[idx - 1] = players[idx - 1], players[idx]

    return players

 

 

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

신고 결과 받기  (0) 2025.01.02
공원 산책  (0) 2024.12.31
[PCCP 기출문제] 2번 / 석유 시추  (2) 2024.12.28
개인정보 수집 유효기간  (0) 2024.12.24
바탕화면  (0) 2024.12.23

[문제] 

https://leetcode.com/problems/monthly-transactions-i/description/

 

[풀이]

1. state 컬럼이 'approved' 인 행에만 집계함수를 적용할 수 있도록 np.where 또는 apply 함수를 통해 새로운 컬럼을 생성

2.  month 컬럼을 요구된 날짜포맷으로 변경

3. month 컬럼과 country 컬럼으로 groupby 를 진행하는데 기준 컬럼이 null값 이어도 그룹화에서 제외하지 않도록dropna=False 설정

4. agg 함수를 적용하고 reset_index 함수로 마무리

 

Pandas

def monthly_transactions(transactions: pd.DataFrame) -> pd.DataFrame:
    transactions['approved'] = np.where(transactions['state']=='approved', transactions['amount'], np.nan)
    transactions['month'] = transactions['trans_date'].dt.strftime("%Y-%m")

    return transactions.groupby(['month', 'country'], dropna=False).agg(
        trans_count=('state','count')
        , approved_count=('approved','count')
        , trans_total_amount=('amount','sum')
        , approved_total_amount=('approved','sum')
    ).reset_index()

 

SQL

SELECT 
    DATE_FORMAT(trans_date, '%Y-%m') as month
    , country
    , COUNT(trans_date) AS trans_count
    , SUM(IF(state='approved', 1, 0)) AS approved_count
    , SUM(amount) AS trans_total_amount
    , SUM(IF(state='approved', amount, 0)) AS approved_total_amount
FROM Transactions
GROUP BY 1, 2

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

Game Play Analysis IV  (0) 2025.01.01
Immediate Food Delivery II  (0) 2024.12.31
Queries Quality and Percentage  (1) 2024.12.27
Percentage of Users Attended a Contest  (0) 2024.12.26
Project Employees I  (0) 2024.12.26

+ Recent posts