Lv1. 명예의 전당(1) (Python)
링크: https://school.programmers.co.kr/learn/courses/30/lessons/138477?language=python3
내가 작성한 코드
def solution(k, score):
answer = [] # 매일 발표되는 명예의 전당 최하위 점수 저장
hall = [] # 현재 명예의 전당에 올라 있는 점수들 저장
for s in score:
hall.append(s) # 오늘 점수를 명예의 전당 후보에 추가
hall.sort() # 오름차순으로 점수 정렬
if len(hall) > k: # 명예의 전당에는 최대 k개 점수만 유지해야 함
hall.pop(0) # k개를 초과하면 최하위 점수 제거
answer.append(hall[0]) # 현재 명예의 전당에서의 최하위 점수
return answer
Lv4. 식품분류별 가장 비싼 식품의 정보 조회하기 (MySQL)
링크: https://school.programmers.co.kr/learn/courses/30/lessons/131116?language=mysql
내가 작성한 코드
-- 풀이1 (튜플 IN)
SELECT CATEGORY, PRICE AS MAX_PRICE, PRODUCT_NAME
FROM FOOD_PRODUCT
WHERE (CATEGORY, PRICE) IN (SELECT CATEGORY, MAX(PRICE)
FROM FOOD_PRODUCT
WHERE CATEGORY IN ('과자', '국', '김치', '식용유')
GROUP BY CATEGORY)
ORDER BY PRICE DESC;
-- 풀이2 (JOIN)
SELECT F.CATEGORY, M.MAX_PRICE, F.PRODUCT_NAME
FROM FOOD_PRODUCT F
JOIN (SELECT CATEGORY, MAX(PRICE) AS MAX_PRICE -- 서브쿼리: 카테고리별 최고가 구하기
FROM FOOD_PRODUCT
WHERE CATEGORY IN ('과자', '국', '김치', '식용유')
GROUP BY CATEGORY) M
ON F.CATEGORY = M.CATEGORY
AND F.PRICE = M.MAX_PRICE
ORDER BY M.MAX_PRICE DESC;
-- 풀이3 (ROW_NUMBER())
-- ROW_NUMBER(): 가격이 같아도 다른 순위를 가짐 (각 분류 별 제일 비싼 식품 하나이므로 ROW_NUMBER()이 적합)
-- PARTITION BY CATEGORY: 카테고리별로 따로 순위를 매김
SELECT CATEGORY, PRICE AS MAX_PRICE, PRODUCT_NAME
FROM (SELECT CATEGORY, PRICE, PRODUCT_NAME,
ROW_NUMBER() OVER (PARTITION BY CATEGORY ORDER BY PRICE DESC) AS RN
FROM FOOD_PRODUCT
WHERE CATEGORY IN ('과자', '국', '김치', '식용유')) T
WHERE RN = 1
ORDER BY MAX_PRICE DESC;
'코딩테스트' 카테고리의 다른 글
| [26.02.03 코테(Python/MySQL)]-추억 점수&노선별 평균 역 사이 거리 조회하기 (0) | 2026.02.03 |
|---|---|
| [26.02.02 코테(Python/MySQL)]-문자열 내 마음대로 정렬하기&서울에 위치한 식당 목록 출력하기 (0) | 2026.02.02 |
| [26.01.29 코테(Python/MySQL)]-콜라 문제&있었는데요 없었습니다 (0) | 2026.01.29 |
| [26.01.28 코테(Python/MySQL/Oracle)]-K번째 수&오랜 기간 보호한 동물(1) (0) | 2026.01.28 |
| [26.01.27 코테(Python/MySQL/Oracle)]-푸드 파이트 대회&카테고리 별 도서 판매량 집계하기 (0) | 2026.01.27 |