TIL: Python 자세한 나의 학습 내용 https://datalearn.tistory.com/43
문제 설명: 명함 지갑을 만드는 회사에서 모든 명함을 수납할 수 있는 가장 작은 지갑을 만들기 위해 명함의 가로 길이와 세로 길이를 조사했습니다. 주어진 명함 크기 배열 sizes를 통해 가장 작은 지갑 크기를 구하는 함수 solution을 작성하는 문제입니다.
문제 풀이 순서:
- 각각 가로와 세로의 최대 크기를 저장할 변수를 생성
- 명함의 가로와 세로 크기를 순회하며 최대 크기를 갱신
- 최종적으로 가장 큰 가로와 세로 크기를 곱하여 지갑의 크기를 구합니다.
구체적 구현:
def solution(sizes):
max_w = 0
max_h = 0
for size in sizes:
w, h = size
if w < h:
w, h = h, w
if w > max_w:
max_w = w
if h > max_h:
max_h = h
answer = max_w * max_h
return answer
오늘 배운 점:
- 문제를 단계별로 접근하여 해결하는 방법을 복습 했습니다.
TIL: SQL 자세한 나 학습 내용 https://datalearn.tistory.com/44
문제 설명: PRODUCT 테이블에서 만원 단위의 가격대 별로 상품 개수를 출력하는 SQL문을 작성하는 문제입니다. 가격대 정보는 각 구간의 최소금액으로 표시하고 결과는 가격대를 기준으로 오름차순 정렬해야 합니다.
문제 풀이 순서:
- 각 구간별로 값을 나누어 컬럼에 저장합니다.
- 서브 쿼리를 활용하여 각 금액 구간 별로 그룹화합니다.
- 그룹 간 중첩되는 가격 수를 셉니다.
- 마지막으로 작은 금액을 오름차순으로 정렬합니다.
구체적 구현:
SELECT PRICE_GROUP, COUNT(PRICE_GROUP)
FROM
(
SELECT
CASE WHEN PRICE < 10000 THEN '0'
WHEN PRICE < 20000 THEN '10000'
WHEN PRICE < 30000 THEN '20000'
WHEN PRICE < 40000 THEN '30000'
WHEN PRICE < 50000 THEN '40000'
WHEN PRICE < 60000 THEN '50000'
WHEN PRICE < 70000 THEN '60000'
WHEN PRICE < 80000 THEN '70000'
WHEN PRICE < 90000 THEN '80000'
WHEN PRICE < 100000 THEN '90000'
END 'PRICE_GROUP'
FROM PRODUCT
) as P_G
GROUP BY PRICE_GROUP
ORDER BY PRICE_GROUP;
대안 방법 (FLOOR 함수 사용):
SELECT 10000 * (FLOOR(price / 10000)) AS price_level, COUNT(*) AS product_count
FROM product
GROUP BY FLOOR(price / 10000)
ORDER BY price_level;
오늘 배운 점:
- FLOOR 함수를 사용하여 조건문을 간단하게 작성하는 방법을 알게 되었습니다.
- FLOOR 함수에 대한 이해도를 높일 필요가 있으며, 추가 학습 및 튜터분들과 매니저 님들께 질문을 통해 이를 더 깊이 이해할 예정입니다.
'TIL' 카테고리의 다른 글
본 캠프 11일차 TIL (0) | 2024.07.04 |
---|---|
본 캠프 10일차 TIL (0) | 2024.07.03 |
본 캠프 8일차 TIL (0) | 2024.07.01 |
본 캠프 7일차 TIL 제출용 (0) | 2024.06.30 |
본 캠프 6일차 TIL 제출용 (0) | 2024.06.29 |