본문 바로가기
TIL

본 캠프 14일차 TIL

by Data 학습자 2024. 7. 8.

TIL: Python 학습 내용

오늘 풀어본 문제:

정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 반환하는 함수 solution을 작성하는 문제입니다.

 

제한사항:

  • numbers의 길이는 2 이상 100 이하입니다.
  • numbers의 모든 수는 0 이상 100 이하입니다.

구체적 구현:

def solution(numbers):
    sums = set()  # 두 수의 합을 저장할 집합
    
    # enumerate를 사용하여 리스트를 순회
    for i, num1 in enumerate(numbers):
        for j, num2 in enumerate(numbers):
            if i < j:  # 서로 다른 인덱스일 때만
                sums.add(num1 + num2)
    
    # 집합을 리스트로 변환 후 오름차순 정렬
    answer = sorted(sums)
    
    return answer

 

상세 설명:

  1. 초기 설정:
    •   sums 변수를 집합으로 초기화하여 두 수의 합을 저장합니다. 집합을 사용하는 이유는 중복을 자동으로 제거하기 위함입니다.
  2. 리스트 순회:
    •   enumerate를 사용하여 numbers 리스트를 순회합니다. 외부 루프에서는 인덱스 i와 값 num1을 가져옵니다.
    •   내부 루프에서도 enumerate를 사용하여 numbers 리스트를 순회하며, 인덱스 j와 값 num2를 가져옵니다.
    •   i가 j보다 작을 때만 num1 + num2의 값을 sums 집합에 추가합니다.
  3. 결과 반환:
    •   sums 집합을 리스트로 변환한 후, sorted() 함수를 사용하여 오름차순으로 정렬합니다.
    •   정렬된 리스트 answer를 반환합니다.

오늘 배운 점:

  • 집합 자료형을 사용하여 중복을 제거하는 방법을 배웠습니다.
  • 이중 루프를 사용하여 리스트의 모든 조합을 생성하는 방법을 익혔습니다.

TIL: SQL 학습 내용

오늘 풀어본 문제: FOOD_PRODUCT 테이블에서 특정 카테고리별로 가장 비싼 상품의 카테고리, 가격, 제품명을 조회하는 문제입니다. 결과는 가격을 기준으로 내림차순 정렬합니다.

테이블 구조:

  • CATEGORY: 상품 카테고리 (VARCHAR)
  • PRICE: 가격 (NUMBER)
  • PRODUCT_NAME: 상품 이름 (VARCHAR)

구체적 구현:

SELECT CATEGORY, PRICE, PRODUCT_NAME
FROM FOOD_PRODUCT
WHERE (CATEGORY, PRICE)
IN
(
    SELECT CATEGORY, MAX(PRICE)
    FROM FOOD_PRODUCT
    WHERE CATEGORY REGEXP '과자|국|김치|식용유'
    GROUP BY CATEGORY
)
ORDER BY PRICE DESC;

 

상세 설명:

  1. 서브 쿼리 사용:
    •   서브 쿼리를 사용하여 특정 카테고리별로 가장 높은 가격을 찾습니다.
  2. 조건 설정:
    •   WHERE (CATEGORY, PRICE) IN (...) 조건을 사용하여 서브 쿼리에서 찾은 최대 가격을 가지는 레코드를 필터링합니다.
  3. 결과 정렬:
    •   ORDER BY PRICE DESC를 사용하여 가격을 기준으로 내림차순 정렬합니다.

오늘 배운 점:

  • 어제 풀어본 문제에 정규표현식을 추가로 활용하는 방법을 알아냈습니다.

'TIL' 카테고리의 다른 글

본 캠프 16일차 TIL  (0) 2024.07.09
본 캠프 15일차 TIL  (0) 2024.07.08
본 캠프 13일차 TIL  (0) 2024.07.08
본 캠프 12일차 TIL  (0) 2024.07.05
본 캠프 11일차 TIL  (0) 2024.07.04