TIL: Python 학습 내용
오늘 풀어본 문제:
배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하는 문제입니다. 주어진 array와 [i, j, k]를 원소로 가진 2차원 배열 commands가 주어질 때, 각 commands에 대해 해당 연산을 적용한 결과를 배열에 담아 반환하는 함수 solution을 작성합니다.
제한사항:
- array의 길이는 1 이상 100 이하입니다.
- array의 각 원소는 1 이상 100 이하입니다.
- commands의 길이는 1 이상 50 이하입니다.
- commands의 각 원소는 길이가 3입니다.
구체적 구현:
def solution(array, commands):
result = []
for command in commands:
i, j, k = command
# i, j 인덱스에 맞게 배열을 자릅니다.
sliced_array = array[i-1:j]
# 잘린 배열을 정렬합니다.
sorted_array = sorted(sliced_array)
# 정렬된 배열에서 k번째 숫자를 추출하여 결과 리스트에 추가합니다.
result.append(sorted_array[k-1])
return result
상세 설명:
- 초기 설정:
- result 변수를 빈 리스트로 초기화하여 결과를 저장할 준비를 합니다.
- 명령 처리:
- commands 리스트를 순회하며 각 명령을 i, j, k로 분리합니다.
- array[i-1:j]를 사용하여 부분 배열을 추출합니다.
- 추출한 부분 배열을 sorted() 함수로 정렬합니다.
- 정렬된 배열에서 k-1 번째 요소를 result 리스트에 추가합니다.
- 결과 반환:
- 모든 명령을 처리한 후, 최종 결과 리스트 result를 반환합니다.
오늘 배운 점:
- 리스트의 특정 구간만 추출하고 재정렬하는 방법을 배웠습니다.
- 리스트를 순회하며 조건에 맞는 값을 추출하는 방법을 익혔습니다.
TIL: SQL 학습 내용
오늘 풀어본 문제: REST_INFO 테이블에서 음식종류별로 즐겨찾기 수가 가장 많은 식당의 음식 종류, ID, 식당 이름, 즐겨찾기 수를 조회하는 문제입니다. 결과는 음식 종류를 기준으로 내림차순 정렬해야 합니다.
테이블 구조:
- REST_ID: 식당 ID (VARCHAR)
- REST_NAME: 식당 이름 (VARCHAR)
- FOOD_TYPE: 음식 종류 (VARCHAR)
- VIEWS: 조회수 (NUMBER)
- FAVORITES: 즐겨찾기 수 (NUMBER)
- PARKING_LOT: 주차장 유무 (VARCHAR)
- ADDRESS: 주소 (VARCHAR)
- TEL: 전화번호 (VARCHAR)
구체적 구현:
SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES
FROM REST_INFO
WHERE (FOOD_TYPE, FAVORITES)
IN
(
SELECT FOOD_TYPE, MAX(FAVORITES)
FROM REST_INFO
GROUP BY FOOD_TYPE
)
ORDER BY FOOD_TYPE DESC;
상세 설명:
- 서브 쿼리 사용:
- SELECT FOOD_TYPE, MAX(FAVORITES) FROM REST_INFO GROUP BY FOOD_TYPE 서브 쿼리를 사용하여 음식 종류별로 즐겨찾기 수가 가장 많은 값을 찾습니다.
- 조건 설정:
- WHERE (FOOD_TYPE, FAVORITES) IN (...) 조건을 사용하여 서브 쿼리에서 찾은 최대 즐겨찾기 수를 가지는 레코드를 필터링합니다.
- 결과 정렬:
- ORDER BY FOOD_TYPE DESC를 사용하여 음식 종류를 기준으로 내림차순 정렬합니다.
오늘 배운 점:
- IN 조건을 사용하여 서브 쿼리의 결과만 나오게 필터링하는 방법을 익혔습니다.
'TIL' 카테고리의 다른 글
본 캠프 15일차 TIL (0) | 2024.07.08 |
---|---|
본 캠프 14일차 TIL (0) | 2024.07.08 |
본 캠프 12일차 TIL (0) | 2024.07.05 |
본 캠프 11일차 TIL (0) | 2024.07.04 |
본 캠프 10일차 TIL (0) | 2024.07.03 |