본문 바로가기
TIL

본 캠프 16일차 TIL

by Data 학습자 2024. 7. 9.

TIL: Python 학습 내용

오늘 풀어본 문제:

주어진 음식 배열을 바탕으로, 대회에서 두 선수가 공정하게 음식을 먹을 수 있도록 음식을 배치하는 문제입니다. 각 음식은 칼로리가 적은 순서대로 주어지며, 두 선수는 좌우 대칭으로 음식을 먹게 됩니다. 중앙에 물이 배치되며, 물을 먼저 먹는 선수가 승리하게 됩니다. 주어진 음식을 배열에 맞춰 배치하는 함수를 작성합니다.

 

제한사항:

  • 음식의 종류는 2개 이상 9개 이하입니다.
  • 각 음식의 양은 1 이상 1,000 이하입니다.
  • 음식은 칼로리가 적은 순서대로 주어집니다.
  • 물의 양은 항상 1이며, 중앙에 배치됩니다.
  • 정답의 길이가 3 이상인 경우만 입력으로 주어집니다.

구체적 구현:

def solution(food):
    left_side = ""
    right_side = ""
    
    # food[0]은 물이므로 제외하고 나머지 음식을 처리
    for i in range(1, len(food)):
        # 각 음식을 절반으로 나눠서 배치
        count = food[i] // 2
        left_side += str(i) * count
        right_side = str(i) * count + right_side
        
    # 중앙에 물을 배치하고 양쪽 배치를 합침
    answer = left_side + "0" + right_side
    
    return answer
 

상세 설명:

  1. 초기 설정:
    • left_side와 right_side 변수를 빈 문자열로 초기화하여 음식 배치를 준비합니다.
  2. 음식 배치:
    • 음식 배열의 첫 번째 요소는 물이므로 이를 제외하고 나머지 음식을 처리합니다.
    • 각 음식의 개수를 절반으로 나누어 왼쪽과 오른쪽에 대칭적으로 배치합니다.
    • 이를 위해 반복문을 사용하여 각 음식을 절반으로 나누어 문자열에 추가합니다.
  3. 중앙에 물 배치:
    • 중앙에 물(0)을 추가합니다.
    • left_side와 right_side를 합쳐 최종 문자열을 생성합니다.
  4. 결과 반환:
    • 최종 문자열을 반환하여 대회에서 사용할 음식 배치를 완료합니다.

오늘 배운 점:

  • 문자열을 사용하여 대칭적으로 배치하는 방법을 배웠습니다..
  • 대칭 구조를 만들기 위한 문자열 처리 방법을 이해했습니다.

TIL: SQL 학습 내용

오늘 풀어본 문제:

천재지변으로 인해 데이터가 유실된 상황에서, 입양 기록은 있지만 보호소에 들어온 기록이 없는 동물의 ID와 이름을 조회하는 문제입니다. ANIMAL_INS 테이블과 ANIMAL_OUTS 테이블을 사용하여, ANIMAL_INS에 없는 ANIMAL_ID를 ANIMAL_OUTS에서 찾아내어 ID 순서대로 정렬하여 출력하는 SQL문을 작성합니다.

SELECT ANIMAL_ID, NAME
FROM ANIMAL_OUTS O
WHERE ANIMAL_ID NOT IN (
    SELECT ANIMAL_ID
    FROM ANIMAL_INS
)
ORDER BY ANIMAL_ID;

 

상세 설명:

  1. 초기 설정:
    • ANIMAL_OUTS 테이블에서 동물의 ID와 이름을 조회합니다.
    • 보호소에 들어온 기록이 없는 동물을 찾기 위해 NOT IN 절을 사용합니다.
  2. 서브쿼리 사용:
    • 서브쿼리에서 ANIMAL_INS 테이블의 모든 ANIMAL_ID를 조회합니다.
    • 메인 쿼리에서는 ANIMAL_OUTS의 ANIMAL_ID가 서브쿼리 결과에 없는 경우를 필터링합니다.
  3. 정렬:
    • 결과를 ANIMAL_ID 기준으로 오름차순 정렬합니다.
  4. 결과 반환:
    • 유실된 동물의 ID와 이름을 출력합니다.

오늘 배운 점:

  • NOT IN 절을 사용하여 한 테이블에만 존재하는 데이터를 필터링하는 방법을 배웠습니다.
  • 서브쿼리를 사용하여 조건을 만족하는 데이터를 조회하는 방법을 익혔습니다.

'TIL' 카테고리의 다른 글

본 캠프 18일차 TIL  (0) 2024.07.11
본 캠프 17일차 TIL  (0) 2024.07.10
본 캠프 15일차 TIL  (0) 2024.07.08
본 캠프 14일차 TIL  (0) 2024.07.08
본 캠프 13일차 TIL  (0) 2024.07.08