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
상세 설명:
- 초기 설정:
- sums 변수를 집합으로 초기화하여 두 수의 합을 저장합니다. 집합을 사용하는 이유는 중복을 자동으로 제거하기 위함입니다.
- 리스트 순회:
- enumerate를 사용하여 numbers 리스트를 순회합니다. 외부 루프에서는 인덱스 i와 값 num1을 가져옵니다.
- 내부 루프에서도 enumerate를 사용하여 numbers 리스트를 순회하며, 인덱스 j와 값 num2를 가져옵니다.
- i가 j보다 작을 때만 num1 + num2의 값을 sums 집합에 추가합니다.
- 결과 반환:
- 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;
상세 설명:
- 서브 쿼리 사용:
- 서브 쿼리를 사용하여 특정 카테고리별로 가장 높은 가격을 찾습니다.
- 조건 설정:
- WHERE (CATEGORY, PRICE) IN (...) 조건을 사용하여 서브 쿼리에서 찾은 최대 가격을 가지는 레코드를 필터링합니다.
- 결과 정렬:
- 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 |