Lv1. 푸드 파이트 대회 (Python)
링크: https://school.programmers.co.kr/learn/courses/30/lessons/134240
내가 작성한 코드
def solution(food):
left = '' # 왼쪽 선수가 먹을 음식 순서를 저장할 변수
for i in range(1, len(food)): # i는 1부터 food리스트의 마지막 인덱스까지 순회
count = food[i] // 2
# i번 음식의 전체 개수 중 2로 나눈 몫만 구함 (정수 나눗셈) = 왼쪽 선수 쪽에 배치할 i번 음식의 개수
left += str(i) * count # 숫자 i를 문자열로 변환 후 문자열을 count번 반복
return left + "0" + left[::-1] # 왼쪽 선수의 음식 순서 + 가운데에 배치되는 물 + left문자열을 거꾸로 뒤집은 문자열
Lv3. 카테고리 별 도서 판매량 집계하기 (MySQL)
링크: https://school.programmers.co.kr/learn/courses/30/lessons/144855
내가 작성한 코드
-- 풀이1 (범위)
SELECT B.CATEGORY, SUM(S.SALES) AS TOTAL_SALES
FROM BOOK B
JOIN BOOK_SALES S
ON B.BOOK_ID = S.BOOK_ID
WHERE S.SALES_DATE >= '2022-01-01' AND S.SALES_DATE < '2022-02-01'
GROUP BY B.CATEGORY
ORDER BY B.CATEGORY;
-- 풀이2 (BETWEEN)
SELECT B.CATEGORY, SUM(S.SALES) AS TOTAL_SALES
FROM BOOK B
JOIN BOOK_SALES S
ON B.BOOK_ID = S.BOOK_ID
WHERE S.SALES_DATE BETWEEN '2022-01-01' AND S.SALES_DATE '2022-01-31'
GROUP BY B.CATEGORY
ORDER BY B.CATEGORY;
-- 풀이3 (YEAR/MONTH)
SELECT B.CATEGORY, SUM(S.SALES) AS TOTAL_SALES
FROM BOOK B
JOIN BOOK_SALES S
ON B.BOOK_ID = S.BOOK_ID
WHERE YEAR(S.SALES_DATE) = 2022 AND MONTH(S.SALES_DATE) = 1
GROUP BY B.CATEGORY
ORDER BY B.CATEGORY;
-- 풀이4 (DATE_FORMAT)
SELECT B.CATEGORY, SUM(S.SALES) AS TOTAL_SALES
FROM BOOK B
JOIN BOOK_SALES S
ON B.BOOK_ID = S.BOOK_ID
WHERE DATE_FORMAT(S.SALES_DATE, '%Y-%m') = '2022-01'
GROUP BY B.CATEGORY
ORDER BY B.CATEGORY;
Oracle
-- 풀이1 (DATE)
SELECT B.CATEGORY, SUM(S.SALES) AS TOTAL_SALES
FROM BOOK B
JOIN BOOK_SALES S
ON B.BOOK_ID = S.BOOK_ID
WHERE S.SALES_DATE >= DATE '2022-01-01' AND S.SALES_DATE < DATE '2022-02-01'
GROUP BY B.CATEGORY
ORDER BY B.CATEGORY;
-- 풀이2 (TO_DATE, 포맷 명시)
SELECT B.CATEGORY, SUM(S.SALES) AS TOTAL_SALES
FROM BOOK B
JOIN BOOK_SALES S
ON B.BOOK_ID = S.BOOK_ID
WHERE S.SALES_DATE >= TO_DATE('2022-01-01', 'YYYY-MM-DD') AND S.SALES_DATE < TO_DATE('2022-02-01', 'YYYY-MM-DD')
GROUP BY B.CATEGORY
ORDER BY B.CATEGORY;
-- 풀이3 (TRUNC(), 월 기준 자르기)
SELECT B.CATEGORY, SUM(S.SALES) AS TOTAL_SALES
FROM BOOK B
JOIN BOOK_SALES S
ON B.BOOK_ID = S.BOOK_ID
WHERE TRUNC(S.SALES_DATE, 'MM') = DATE '2022-01-01'
GROUP BY B.CATEGORY
ORDER BY B.CATEGORY;
-- 풀이4 (ADD_MONTHS+범위) -> 2022년 1월만 정확히 고름
SELECT B.CATEGORY, SUM(S.SALES) AS TOTAL_SALES
FROM BOOK B
JOIN BOOK_SALES S
ON B.BOOK_ID = S.BOOK_ID
WHERE S.SALES_DATE >= DATE '2022-01-01' AND S.SALES_DATE < ADD_MONTHS(DATE '2022-01-01', 1)
GROUP BY B.CATEGORY
ORDER BY B.CATEGORY;'코딩테스트' 카테고리의 다른 글
| [26.01.29 코테(Python/MySQL)]-콜라 문제&있었는데요 없었습니다 (0) | 2026.01.29 |
|---|---|
| [26.01.28 코테(Python/MySQL/Oracle)]-K번째 수&오랜 기간 보호한 동물(1) (0) | 2026.01.28 |
| [26.01.26 코테(Python/MySQL/Oracle)]-시저 암호&진료과별 총 예약 횟수 출력하기 (0) | 2026.01.26 |
| [26.01.23 코테(Python/MySQL)]-최소직사각형&오랜 기간 보호한 동물(2) (0) | 2026.01.23 |
| [26.01.22 코테(Python/MySQL)]-크기가 작은 부분 문자열&취소되지 않은 진료 예약 조회하기 (0) | 2026.01.22 |