본문 바로가기
TIL

본 캠프 13일차 TIL

by Data 학습자 2024. 7. 8.

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
 

상세 설명:

  1. 초기 설정:
    •   result 변수를 빈 리스트로 초기화하여 결과를 저장할 준비를 합니다.
  2. 명령 처리:
    •   commands 리스트를 순회하며 각 명령을 i, j, k로 분리합니다.
    •   array[i-1:j]를 사용하여 부분 배열을 추출합니다.
    •   추출한 부분 배열을 sorted() 함수로 정렬합니다.
    •   정렬된 배열에서 k-1 번째 요소를 result 리스트에 추가합니다.
  3. 결과 반환:
    •   모든 명령을 처리한 후, 최종 결과 리스트 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;

 

상세 설명:

  1. 서브 쿼리 사용:
    •   SELECT FOOD_TYPE, MAX(FAVORITES) FROM REST_INFO GROUP BY FOOD_TYPE 서브 쿼리를 사용하여 음식 종류별로 즐겨찾기 수가 가장 많은 값을 찾습니다.
  2. 조건 설정:
    •   WHERE (FOOD_TYPE, FAVORITES) IN (...) 조건을 사용하여 서브 쿼리에서 찾은 최대 즐겨찾기 수를 가지는 레코드를 필터링합니다.
  3. 결과 정렬:
    •   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