코딩테스트

[26.01.27 코테(Python/MySQL/Oracle)]-푸드 파이트 대회&카테고리 별 도서 판매량 집계하기

지니248 2026. 1. 27. 18:36

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;