TIL

본 캠프 17일차 TIL

Data 학습자 2024. 7. 10. 20:17

TIL: Python 학습 내용

오늘 풀어본 문제:

콜라 빈 병을 가져다주면 콜라를 받는 문제의 일반화된 버전을 해결하는 문제입니다. 빈 병 a개를 가져다주면 콜라 b병을 주는 마트에서, 빈 병 n개를 가져다주었을 때 받을 수 있는 총 콜라 병 수를 계산하는 함수를 작성합니다.

제한사항:

  • 1 ≤ b < a ≤ n ≤ 1,000,000
  • 정답은 항상 int 범위를 넘지 않음

구체적 구현:

 
def solution(a, b, n):
    total_cola = 0
    while n >= a:
        new_cola = (n // a) * b
        total_cola += new_cola
        n = (n % a) + new_cola
    return total_cola
  1. 초기 설정:
    • total_cola 변수를 0으로 초기화하여 총 받을 수 있는 콜라 병 수를 저장할 준비를 합니다.
  2. 콜라 교환:
    • n이 a보다 크거나 같은 동안 반복합니다.
    • n // a로 받을 수 있는 새로운 콜라 병 수를 계산하고, 이를 new_cola에 저장합니다.
    • total_cola에 new_cola를 더하여 총 콜라 병 수를 갱신합니다.
    • 남은 빈 병 수는 n % a와 new_cola의 합으로 갱신합니다.
  3. 결과 반환:
    • 더 이상 콜라를 받을 수 없을 때, total_cola를 반환합니다.

오늘 배운 점:

  • 반복문을 사용하여 조건에 따라 값을 갱신하는 방법을 배웠습니다.
  • 나눗셈 연산과 나머지 연산을 통해 문제를 해결하는 방법을 익혔습니다.

TIL: SQL 학습 내용

오늘 풀어본 문제:

상반기 아이스크림 총주문량이 3,000보다 높으면서 주 성분이 과일인 아이스크림 맛을 총주문량이 큰 순서대로 조회하는 SQL 문을 작성합니다.

 

구체적 구현:

 
SELECT I.FLAVOR
FROM FIRST_HALF F INNER JOIN ICECREAM_INFO I ON F.FLAVOR = I.FLAVOR
WHERE F.TOTAL_ORDER > 3000 AND I.INGREDIENT_TYPE = 'fruit_based'
ORDER BY F.TOTAL_ORDER DESC;
  1. 테이블 조인:
    • FIRST_HALF 테이블과 ICECREAM_INFO 테이블을 FLAVOR 컬럼을 기준으로 내부 조인합니다.
  2. 조건 필터링:
    • TOTAL_ORDER가 3,000보다 큰 행만 선택합니다.
    • INGREDIENT_TYPE이 'fruit_based'인 행만 선택합니다.
  3. 정렬:
    • TOTAL_ORDER를 기준으로 내림차순 정렬하여 총주문량이 큰 순서대로 결과를 정렬합니다.
  4. 결과 반환:
    • 필터링된 결과에서 FLAVOR 컬럼만 선택하여 반환합니다.

오늘 배운 점:

  • 오늘 문제 풀이에선 없음