본문 바로가기
TIL

본 캠프 18일차 TIL

by Data 학습자 2024. 7. 11.

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
  1. 초기 설정:
    • answer 변수를 빈 리스트로 초기화하여 매일 발표된 명예의 전당 최하위 점수를 저장합니다.
    • hall_of_fame 변수를 빈 리스트로 초기화하여 명예의 전당 목록을 저장합니다.
  2. 명예의 전당 관리:
    • score 리스트를 순회하면서 각 가수의 점수를 hall_of_fame 리스트에 추가합니다.
    • hall_of_fame 리스트를 내림차순으로 정렬합니다.
    • 명예의 전당에 k개 이상의 점수가 있는 경우, 최하위 점수를 제거합니다.
  3. 최하위 점수 추가:
    • 현재 명예의 전당의 최하위 점수를 answer 리스트에 추가합니다.
  4. 결과 반환:
    • 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;
  1. GROUP BY 사용:
    • USER_ID와 PRODUCT_ID를 기준으로 그룹화하여 동일한 회원이 동일한 상품을 재구매한 데이터를 식별합니다.
  2. HAVING 절 사용:
    • 그룹화된 데이터에서 COUNT(PRODUCT_ID)가 2 이상인 경우만 선택하여 재구매한 데이터를 필터링합니다.
  3. 정렬:
    • USER_ID를 기준으로 오름차순 정렬하고, 동일한 USER_ID 내에서 PRODUCT_ID를 기준으로 내림차순 정렬합니다.
  4. 결과 반환:
    • 필터링된 결과에서 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