on my way

[프로그래머스 코딩테스트 연습 SQL] 업그레이드 된 아이템 구하기 (MySQL) 본문

algorithm/SQL

[프로그래머스 코딩테스트 연습 SQL] 업그레이드 된 아이템 구하기 (MySQL)

wingbeat 2024. 8. 4. 05:08
반응형

처음에 문제를 잘 이해하지 못했다.

요약하자면 부모의 희귀도가 'RARE'인 자식 아이템을 출력하는 것이다.

 

  1. 문제 이해
    • 주어진 문제는 게임에서 사용되는 아이템들이 업그레이드 가능한지 확인하고, 희귀도가 'RARE'인 아이템들의 다음 업그레이드 아이템을 찾아야 했다.
    • 아이템 간의 업그레이드 관계가 주어졌고, 업그레이드 가능한 아이템들을 찾아야 했다.
  2. 테이블 구조
    • ITEM_INFO 테이블은 각 아이템의 정보를 담고 있었다. 이 테이블에는 ITEM_ID, ITEM_NAME, RARITY, PRICE 컬럼이 있었다.
    • ITEM_TREE 테이블은 아이템 간의 업그레이드 관계를 나타내고 있었다. 이 테이블에는 ITEM_IDPARENT_ITEM_ID 컬럼이 있었다.
  3. 요구사항 분석
    • 희귀도가 'RARE'인 아이템들의 다음 업그레이드 아이템들을 찾아야 했다.
    • 결과는 아이템 ID를 기준으로 내림차순으로 정렬해야 했다.
  4. 쿼리 작성 단계
    • 먼저, 희귀도가 'RARE'인 아이템들을 찾는 서브쿼리를 작성했다.
      SELECT ITEM_ID
      FROM ITEM_INFO
      WHERE RARITY = 'RARE'
    • 다음으로, 이 서브쿼리를 사용하여 ITEM_TREE 테이블에서 PARENT_ITEM_ID가 위 서브쿼리에 해당하는 아이템들을 찾도록 했다.
    • ITEM_TREE 테이블과 ITEM_INFO 테이블을 조인하여 해당 아이템들의 정보를 가져오도록 했다.
    • 최종적으로 결과를 아이템 ID 기준으로 내림차순으로 정렬했다.
  5. 최종 쿼리
    • 최종적으로 작성된 쿼리는 아래와 같다.
      SELECT T.ITEM_ID, I.ITEM_NAME, I.RARITY
      FROM ITEM_INFO I
      JOIN ITEM_TREE T
      ON I.ITEM_ID = T.ITEM_ID
      WHERE T.PARENT_ITEM_ID IN (
          SELECT ITEM_ID
          FROM ITEM_INFO
          WHERE RARITY = 'RARE'
      )
      ORDER BY T.ITEM_ID DESC
    • ITEM_TREE 테이블과 ITEM_INFO 테이블을 조인하여 희귀도가 'RARE'인 부모 아이템들을 가진 자식 아이템들의 정보를 가져왔다. 
반응형