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
상세 설명:
- 초기 설정:
- left_side와 right_side 변수를 빈 문자열로 초기화하여 음식 배치를 준비합니다.
- 음식 배치:
- 음식 배열의 첫 번째 요소는 물이므로 이를 제외하고 나머지 음식을 처리합니다.
- 각 음식의 개수를 절반으로 나누어 왼쪽과 오른쪽에 대칭적으로 배치합니다.
- 이를 위해 반복문을 사용하여 각 음식을 절반으로 나누어 문자열에 추가합니다.
- 중앙에 물 배치:
- 중앙에 물(0)을 추가합니다.
- left_side와 right_side를 합쳐 최종 문자열을 생성합니다.
- 결과 반환:
- 최종 문자열을 반환하여 대회에서 사용할 음식 배치를 완료합니다.
오늘 배운 점:
- 문자열을 사용하여 대칭적으로 배치하는 방법을 배웠습니다..
- 대칭 구조를 만들기 위한 문자열 처리 방법을 이해했습니다.
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;
상세 설명:
- 초기 설정:
- ANIMAL_OUTS 테이블에서 동물의 ID와 이름을 조회합니다.
- 보호소에 들어온 기록이 없는 동물을 찾기 위해 NOT IN 절을 사용합니다.
- 서브쿼리 사용:
- 서브쿼리에서 ANIMAL_INS 테이블의 모든 ANIMAL_ID를 조회합니다.
- 메인 쿼리에서는 ANIMAL_OUTS의 ANIMAL_ID가 서브쿼리 결과에 없는 경우를 필터링합니다.
- 정렬:
- 결과를 ANIMAL_ID 기준으로 오름차순 정렬합니다.
- 결과 반환:
- 유실된 동물의 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 |