목록2024/12 (153)
susinlee 님의 블로그
[문제]https://leetcode.com/problems/percentage-of-users-attended-a-contest/description/ [풀이]1. register 테이블에서 contest_id 별로 유저 수를 계산한다.2. 계산한 유저 수를 총 유저 수로 나누어서 비율(percentage을 구해준다.3. percentage 를 내림차순 정렬, contest_id 를 오름차순 정렬 해준다. Pandasdef users_percentage(users: pd.DataFrame, register: pd.DataFrame) -> pd.DataFrame: grouped = register.groupby('contest_id')['user_id'].count().reset_index(nam..
[문제]https://leetcode.com/problems/project-employees-i/description/ [풀이]1. project 테이블을 기준으로 left join 을 해준다.2. project_id 별로 experience_years의 평균을 구해주는데 소수점 둘째 자리까지 반올림 해준다.3. 컬럼명을 average_years 로 변경해준다. Pandasimport pandas as pddef project_employees_i(project: pd.DataFrame, employee: pd.DataFrame) -> pd.DataFrame: return project.merge(employee, how='left').groupby('project_id')['experie..

[문제]https://leetcode.com/problems/average-selling-price/description/ [풀이]시계열 조인 문제로 두 가지 방법이 있다. 일반적인 조인 방법(merge)과 투 포인터 접근법을 사용한 방법(merge_asof)이다. 일반적인 조인 방법은 모든 가능한 왼쪽-오른쪽 조합을 계산하는 것으로 O(M x N) 의 시간복잡도를 가지며, 이후 필터링 하는 것은 비용이 너무 크다. 반면, merge_asof는 O(N)의 투 포인터 접근법을 사용해 왼쪽과 오른쪽 데이터를 순회하는데, 이는 시간 정렬이 필요하지만, 시계열 데이터 처리에서는 일반적으로 시간 정렬을 필요로 하기 때문에 큰 문제가 되지 않는다. 1. merge 조인 방법먼저 일반적인 조인 방법으로 풀어보자..
[문제]https://leetcode.com/problems/not-boring-movies/ [풀이]1. 조건1) 모듈 연산으로 id가 홀수인 행 필터링2. 조건2) != 연산으로 description이 boring이 아닌 행 필터링3. rating으로 내림차순 정렬 Pandasimport pandas as pddef not_boring_movies(cinema: pd.DataFrame) -> pd.DataFrame: cond1 = cinema['id'] % 2 == 1 cond2 = cinema['description'] != 'boring' return cinema[cond1 & cond2].sort_values(by='rating', ascending=False) SQL# Wri..
그래프 자료구조에 대해 배웠다. 신장 트리와 최소 신장 트리 크래프 자료구조에 대해 배웠다. 신장 트리와 최소 신장 트리 크루스칼 알고리즘을 배웠는데, 대충 어떤 구조인지 어떤 알고리즘인지만 파악했다. 외우진 못했고 (구현하라고 하면 할 수 있으려나?) 나중에 써먹을 일이 있다면 검색해서 써먹어야겠다.
[문제]https://school.programmers.co.kr/learn/courses/30/lessons/150370 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr [풀이]1. 날짜 비교를 datetime 모듈로 진행하였다.2. 월이 28일까지라서 보정작업을 해줘야 한다.3. 월이 28일이면서 달이 12월이면 연도도 보정작업을 해줘야 한다.from datetime import datetimedef solution(today, terms, privacies): answer = [] date_today = datetime.strptime(today, '%Y.%m.%d') dic = {..
[문제]https://leetcode.com/problems/confirmation-rate/description/ [풀이]1. 모든 user_id가 보여야 하므로 Signups 테이블을 기준으로 LEFT JOIN2. action 열에서 confirmed인 행과 아닌 행들을 1과 0으로 나눠서 comfirmation_rate을 mean 함수로 손쉽게 구할 수 있음3. user_id로 그룹화 해준뒤 mean과 round 함수 적용 Pandasimport pandas as pddef confirmation_rate(signups: pd.DataFrame, confirmations: pd.DataFrame) -> pd.DataFrame: df = pd.merge(signups, confirmations..