TIL: Python 학습 내용
오늘 풀어본 문제:
TV 프로그램 "명예의 전당"에서 매일 1명의 가수가 노래를 부르고 점수를 받습니다. 매일 출연한 가수의 점수가 지금까지 출연 가수들의 점수 중 상위 k번째 이내이면 명예의 전당에 오르게 되고, 명예의 전당 목록의 최하위 점수를 발표하는 문제입니다. 매일 발표된 명예의 전당의 최하위 점수를 계산하는 함수를 작성합니다.
제한사항:
- 3 ≤ k ≤ 100
- 7 ≤ score의 길이 ≤ 1,000
- 0 ≤ score[i] ≤ 2,000
구체적 구현:
def solution(k, score):
answer = []
hall_of_fame = []
for s in score:
hall_of_fame.append(s)
hall_of_fame.sort(reverse=True)
if len(hall_of_fame) > k:
hall_of_fame.pop()
answer.append(hall_of_fame[-1])
return answer
- 초기 설정:
- answer 변수를 빈 리스트로 초기화하여 매일 발표된 명예의 전당 최하위 점수를 저장합니다.
- hall_of_fame 변수를 빈 리스트로 초기화하여 명예의 전당 목록을 저장합니다.
- 명예의 전당 관리:
- score 리스트를 순회하면서 각 가수의 점수를 hall_of_fame 리스트에 추가합니다.
- hall_of_fame 리스트를 내림차순으로 정렬합니다.
- 명예의 전당에 k개 이상의 점수가 있는 경우, 최하위 점수를 제거합니다.
- 최하위 점수 추가:
- 현재 명예의 전당의 최하위 점수를 answer 리스트에 추가합니다.
- 결과 반환:
- answer 리스트를 반환하여 매일 발표된 명예의 전당의 최하위 점수를 결과로 출력합니다.
오늘 배운 점:
- pop() 함수의 기능과 역할에 대해서 배웠습니다.
TIL: SQL 학습 내용
오늘 풀어본 문제:
의류 쇼핑몰의 온라인 상품 판매 정보를 담은 ONLINE_SALE 테이블에서 동일한 회원이 동일한 상품을 재구매한 데이터를 조회하는 문제입니다. 재구매한 회원 ID와 재구매한 상품 ID를 출력하는 SQL 문을 작성합니다.
구체적 구현:
SELECT USER_ID, PRODUCT_ID
FROM ONLINE_SALE
GROUP BY USER_ID, PRODUCT_ID
HAVING COUNT(PRODUCT_ID) >= 2
ORDER BY USER_ID ASC, PRODUCT_ID DESC;
- GROUP BY 사용:
- USER_ID와 PRODUCT_ID를 기준으로 그룹화하여 동일한 회원이 동일한 상품을 재구매한 데이터를 식별합니다.
- HAVING 절 사용:
- 그룹화된 데이터에서 COUNT(PRODUCT_ID)가 2 이상인 경우만 선택하여 재구매한 데이터를 필터링합니다.
- 정렬:
- USER_ID를 기준으로 오름차순 정렬하고, 동일한 USER_ID 내에서 PRODUCT_ID를 기준으로 내림차순 정렬합니다.
- 결과 반환:
- 필터링된 결과에서 USER_ID와 PRODUCT_ID 컬럼을 선택하여 반환합니다.
오늘 배운 점:
- GROUP BY에 2가지 컬럼을 묶을 수 있다는 사실을 알게되었다..
'TIL' 카테고리의 다른 글
본 캠프 20일차 TIL (0) | 2024.07.13 |
---|---|
본 캠프 19일차 TIL (0) | 2024.07.12 |
본 캠프 17일차 TIL (0) | 2024.07.10 |
본 캠프 16일차 TIL (0) | 2024.07.09 |
본 캠프 15일차 TIL (0) | 2024.07.08 |