먼지뭉치 Data Analysis

[HackerRank SQL] Draw The Triangle 별 삼각형 그리 본문

SQL

[HackerRank SQL] Draw The Triangle 별 삼각형 그리

데이터분석과 개발 2025. 3. 6. 13:24

안녕하세요 해커랭크 sql 오답정리를 해보려 합니다.

일단 easy 레벨은 다 풀었고 Medium 레벨을 가기전 그동안 풀었던 문제들을 포스팅 해보려 합니다.

 

파이썬으로는 많이 해봤지만 sql에서 별 삼각형 그리기는 처음이라 어려웠네요.

답안을 정리하고 어떤 함수였는지 정리해보려 합니다.

 

Q. P(R) represents a pattern drawn by Julia in R rows. The following pattern represents P(5): Write a Query to print the pattern P(20).

1~20개의 별을 행별로 출력하는 문제입니다.

sql에서 print의 개념자체를 처음 봤기에 gpt에서 검색해서 답을 찾아봤습니다.


Answer

WITH RECURSIVE star_pattern AS (
    SELECT 1 AS n  -- 시작값 (1부터 시작)
    UNION ALL
    SELECT n + 1 FROM star_pattern WHERE n <20   -- 1씩 증가하며 재귀 호출
)
SELECT REPEAT('* ', n) AS stars FROM star_pattern;

 

파이썬 while문과 마찬가지로 1부터 숫자를 하나씩 더해가며 n이 20이 되기전까지 *을 출력하는 함수지만, CTE로 만든 star_pattern 테이블이 어떻게 만들어진건지 감이 잘 안왔습니다.

 

하나씩 뜯어보니 star_pattern 테이블은

n= 1 로 시작하고 (Select 1 As n)

n<20일 때까지 (Where n < 20)

병합  n = 2  (Union All Select n+1 From star_pattern )

병합 n = 3 (Union All Select n+1 From star_pattern )

...

병합 n= 20  (Union All Select n+1 From star_pattern )

 

으로 간단한 n에 관한 테이블이었습니다. 간단히 표로 그려보자면 아래와 같겠네요!

 

<star_pattern 테이블>

n
1
2
3
...
20

 

n이라는 컬럼이 만들어지기 때문에 REPEAT('* ', n) 함수를 넣어줬을 때,

모든 n 값에 대해 결과값을 프린트해주는 걸 볼 수 있습니다.

 

파이썬 코딩테스트 같은 이 문제를 처음 봤을 땐 감도 안왔는데 정리를 해보니 이젠 조금 알 것 같습니다.

 

읽어주셔서 감사합니다 :)