목록코드카타 (158)
susinlee 님의 블로그
[문제]https://leetcode.com/problems/customers-who-bought-all-products/description/ [풀이]1. customer 테이블에서 customer_id 별로 그룹화한 뒤 product_key를 세어준다.2. 같은 상품을 여러 번 구매했을 수 있으므로 중복을 제거해준다.3. product 테이블의 개수와 같은 customer_id 만 필터링한다. Pandasimport pandas as pddef find_customers(customer: pd.DataFrame, product: pd.DataFrame) -> pd.DataFrame: df = customer.drop_duplicates().groupby('customer_id').count()...
[문제]https://school.programmers.co.kr/learn/courses/30/lessons/42747 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr [풀이]1. for문을 통해 i=1부터 citations의 개수만큼 돌면서 i 별로 i번이상 인용된 논문을 세어서 그 개수가 i 이상이라면 H-Index의 후보다.2. 그 중 가장 큰 값이 H_Index가 된다.3. 시간복잡도가 n^2으로 비효율적이다. def solution(citations): n = len(citations) h_index = 0 for i in range(1, n+1): count =..
[문제]https://leetcode.com/problems/biggest-single-number/description/ [풀이]1. 중복 행을 남김없이 전부 제거해준다. drop_duplicates() 함수에 keep=False 매개변수를 주면 된다.2. max() 함수를 통해 최댓값을 구해준다.3. 데이터프레임에 max() 함수를 쓰게 되면 시리즈가 되는데 to_frame() 함수로 데이터프레임으로 변환해준다. Pandasimport pandas as pddef biggest_single_number(my_numbers: pd.DataFrame) -> pd.DataFrame: return my_numbers.drop_duplicates(keep=False).max().to_frame(name..
[문제]https://school.programmers.co.kr/learn/courses/30/lessons/131701 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr [풀이]1. 원형리스트를 구현하기 위해 elements를 늘려주고2. 연속 부분 수열의 길이마다 초기합을 구해준 뒤3. 이전 값(start-1) 하나를 빼고 다음 값(start + length - 1)을 더하는 방식으로 합을 추가 def solution(elements): n = len(elements) elements = elements * 2 # 원형 리스트 구현 answer = set() # 부분 수열의 ..
[문제]https://leetcode.com/problems/find-followers-count/description/ [풀이]1. user_id 별로 그룹화 후 follower_id 수를 센다2. user_id 로 오름차순 정렬해준다 Pandasimport pandas as pddef count_followers(followers: pd.DataFrame) -> pd.DataFrame: return followers.groupby('user_id').size().reset_index(name='followers_count').sort_values('user_id') SQLSELECT user_id , COUNT(follower_id) as followers_countFRO..
[문제]https://school.programmers.co.kr/learn/courses/30/lessons/76502 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr [풀이]1. stack 자료구조를 이용하여 괄호 검사를 진행한다2. 괄호 검사가 끝났다면 deque 자료구조를 이용해서 왼쪽으로 회전시켜준다 3. 문자열 길이만큼 반복한다 from collections import dequedef solution(s): answer = 0 n = len(s) queue = deque(s) # 문자열 길이만큼 반복 for _ in range(n): # 괄호 검사 ..
[문제]https://leetcode.com/problems/classes-more-than-5-students/ [풀이]1. class로 그룹화 해준 뒤 student의 수를 세어준다2. student 수가 5이상 행들만 필터링하고 class열만 출력한다 Pandasimport pandas as pddef find_classes(courses: pd.DataFrame) -> pd.DataFrame: df = courses.groupby('class')['student'].count().reset_index(name='cnt') return df[df['cnt'] >= 5][['class']] SQLSELECT classFROM CoursesGROUP BY classHAVING COUNT(st..
[문제]https://school.programmers.co.kr/learn/courses/30/lessons/138476 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr [풀이]1. 각 사이즈별 개수를 세준다 (Counter 사용)2. 값만 가져와서 내림차순으로 정렬해준 뒤3. 하나씩 더해가며 k가 넘어 갈 때 반복한 수를 리턴한다. from collections import Counterdef solution(k, tangerine): answer = 0 size = Counter(tangerine) size = sorted(size.values(), reverse=True) ..