[HackerRank SQL] Draw The Triangle 별 삼각형 그리
안녕하세요 해커랭크 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 값에 대해 결과값을 프린트해주는 걸 볼 수 있습니다.
파이썬 코딩테스트 같은 이 문제를 처음 봤을 땐 감도 안왔는데 정리를 해보니 이젠 조금 알 것 같습니다.
읽어주셔서 감사합니다 :)