목록코드카타 (157)
susinlee 님의 블로그
[문제]https://leetcode.com/problems/employees-whose-manager-left-the-company/description/ [풀이]1. employee_id에 포함되지 않은 manager_id를 필터링하고2. salary가 30000미만인 행들만 필터링해준다.3. ~ 연산자를 사용해서 manager_id가 null임에도 필터링된 친구들을 dropna()로 날려버린다.4. 정렬하고 조건에 맞게 열을 선택해서 반환한다. Pandasimport pandas as pddef find_employees(employees: pd.DataFrame) -> pd.DataFrame: cond1 = ~employees.manager_id.isin(employees['employee..
[문제]https://leetcode.com/problems/last-person-to-fit-in-the-bus/description/ [풀이]1. turn을 기준으로 정렬을 해준 후에2. weight 열의 누적합을 구해서 새로운 컬럼을 생성한다.3. 누적합이 1000이하인 행들만 필터링한 뒤 가장 마지막행을 가져와서 반환하면 Pandasimport pandas as pddef last_passenger(queue: pd.DataFrame) -> pd.DataFrame: queue.sort_values('turn', inplace=True) queue['cum_sum'] = queue.weight.cumsum() return queue[queue.cum_sum SQLSELECT ..
[문제]https://leetcode.com/problems/product-price-at-a-given-date/description/ [풀이]1. 2019-08-16을 포함한 이전 날짜들만 필터링하고 product_id는 오름차순, change_date는 내림차순으로 정렬해준다.2. id 기준으로 중복행을 제거하되 첫번째 행은 제외한다. 완성된 테이블에서 product_id와 new_price열만 가져온다3. 위의 테이블과 products 테이블에서 고유 product_id만 필터링한 테이블과 병합한다. 고유 product_id 테이블 기준으로 left join해주고, null값을 10으로 채워준 뒤 열이름 조건에 맞게 반환해준다. Pandaslast_price = products[products['..
[문제]https://school.programmers.co.kr/learn/courses/30/lessons/42587 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr [풀이]1. 작업할 프로세스에 번호를 부여하고, 우선순위와 함께 묶어준다.→ 왼쪽에서 데이터를 효율적으로 빼내기 위해 deque 자료구조 사용 (popleft 메소드 사용)처리 순서를 나타내는 cnt 변수도 생성해준다. 2. 묶어준 자료(큐)에서 왼쪽에서 현재 처리할 프로세스를 pop 하고큐에서 데이터들을 순회해서 우선순위를 비교한 후 하나라도 큰게 있다면 처리하는 문서를 append 한다.(우선순위가 높을 프로세스를 먼저 처리해야 ..
[문제]https://leetcode.com/problems/consecutive-numbers/description/ [풀이]1. 이전 행의 num 값과 다음 행의 num 값을 불러와서 현재 num 값과 비교한 후 같다면 해당 num을 반환하면 된다.2. shift 함수로 이를 구현하고 num을 반환할 때 중복제거를 해주자. Pandasimport pandas as pddef consecutive_numbers(logs: pd.DataFrame) -> pd.DataFrame: logs['lag'] = logs.num.shift(1) logs['lead'] = logs.num.shift(-1) return pd.DataFrame({ 'ConsecutiveNums' : logs..
[문제]https://school.programmers.co.kr/learn/courses/30/lessons/42586 [풀이]1. deque 자료구조를 통해 조건을 만족하면 해당 작업을 popleft() 함수를 통해 제거하려고 한다.2. 우선 진행률과 속도를 zip으로 묶어서 deque로 만들어주고3. 모든 작업이 끝날 때까지 while문으로 반복해준다.4. deque를 진행률을 업데이트 하면서 완료된 작업을 제거해준다.5. 완료된 작업이 있다면 (count > 0) 그 개수를 반환 리스트에 추가해주자.from collections import dequedef solution(progresses, speeds): answer = [] queue = deque(zip(progresses, s..
[문제]https://leetcode.com/problems/count-salary-categories/description/ [풀이]1. category의 모든 범주를 가져와야 하므로 참조테이블을 만든다.2. 각 범주에 해당하는 조건으로 행을 필터링하고 행의 개수를 세어준다.3. 아래 코드는 1, 2 번을 동시에 하는 방법이다 Pandasimport pandas as pddef count_salary_categories(accounts: pd.DataFrame) -> pd.DataFrame: return pd.DataFrame({ 'category': ['Low Salary', 'Average Salary', 'High Salary'], 'accounts_count': [..
[문제]https://school.programmers.co.kr/learn/courses/30/lessons/42578 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr [풀이]1. 옷의 종류별로 개수를 세어준다. Counter 객체를 이용하자.2. 그 뒤 옷을 한개 선택하는 것부터 n 개 선택하는 것까지 각 경우의 수를 combinations를 사용해서 구해주고 그 값을 전부 더해주고 반환한다.from collections import Counterfrom itertools import combinationsimport mathdef solution(clothes): # 종류별로 개수를 세어준 다음 개..