티스토리 뷰
문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/273711
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
어느 한 게임에서 사용되는 아이템들은 업그레이드가 가능합니다.
'ITEM_A'->'ITEM_B'와 같이 업그레이드가 가능할 때
'ITEM_A'를 'ITEM_B' 의 PARENT 아이템,
PARENT 아이템이 없는 아이템을 ROOT 아이템이라고 합니다.
예를 들어 'ITEM_A'->'ITEM_B'->'ITEM_C'와 같이 업그레이드가 가능한 아이템이 있다면
'ITEM_C'의 PARENT 아이템은 'ITEM_B'
'ITEM_B'의 PARENT 아이템은 'ITEM_A'
ROOT 아이템은 'ITEM_A'가 됩니다.
아래는 해당 게임에서 사용되는 아이템 정보를 담은 ITEM_INFO 테이블과 아이템 관계를 나타낸 ITEM_TREE 테이블입니다. ITEM_INFO 테이블은 다음과 같으며, ITEM_ID, ITEM_NAME, RARITY, PRICE는 각각 아이템 ID, 아이템 명, 아이템의 희귀도, 아이템의 가격을 나타냅니다.
ITEM_TREE 테이블은 아래와 같으며, ITEM_ID, PARENT_ITEM_ID는 각각 아이템 ID, PARENT 아이템의 ID를 나타냅니다.
단, 각 아이템들은 오직 하나의 PARENT 아이템 ID를 가지며, ROOT 아이템의 PARENT 아이템 ID는 NULL 입니다.
ROOT 아이템이 없는 경우는 존재하지 않습니다.
문제) 아이템의 희귀도가 'RARE'인 아이템들의 모든 다음 업그레이드 아이템의 아이템 ID(ITEM_ID), 아이템 명(ITEM_NAME), 아이템의 희귀도(RARITY)를 출력하는 SQL 문을 작성해 주세요. 이때 결과는 아이템 ID를 기준으로 내림차순 정렬해주세요.
정답 쿼리
SELECT ITEM_ID, ITEM_NAME, RARITY
FROM ITEM_INFO
WHERE ITEM_ID IN (
SELECT T.ITEM_ID
FROM ITEM_INFO I INNER JOIN ITEM_TREE T
ON I.ITEM_ID = T.PARENT_ITEM_ID
WHERE I.RARITY = 'RARE'
)
ORDER BY ITEM_ID DESC
배운 점
- WHERE 절의 서브쿼리가 다중 값을 반환할 가능성이 있기 때문에 IN을 사용해야 한다.
'Algorithm' 카테고리의 다른 글
프로그래머스 Lv.3: 물고기 종류 별 대어 찾기 - MySQL 풀이 (0) | 2025.03.09 |
---|---|
프로그래머스 Lv.3: 대장균의 크기에 따라 분류하기 1 - MySQL 풀이 (0) | 2025.03.08 |
백준 1504번: 특정한 최단 경로 (G4) - Python 풀이 (0) | 2025.03.06 |
백준 1446번: 지름길 (S1) - Python 풀이 (0) | 2025.03.05 |
프로그래머스 Lv.2: 재구매가 일어난 상품과 회원 리스트 구하기 - MySQL 풀이 (1) | 2025.02.28 |
- Total
- Today
- Yesterday
- 코테준비
- BFS
- D2
- 구현
- ios
- 이분탐색
- 힙
- Baekjoon
- MySQL
- Swift
- D3
- 프로그래머스
- 알고리즘
- 큐
- 완전탐색
- 백준
- Deque
- 그리디
- dp
- 투포인터
- Programmers
- 스택
- 코딩테스트
- dfs
- Swift로백준풀기
- 백트래킹
- swea
- Python
- 다이나믹프로그래밍
- SQL
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |