MYSQL/HakerRank_Easy

Draw The Triangle 1과 Repeat 함수

수스리 2025. 4. 13. 20:23

문제

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).

P(R)은 줄리아가 그린 R개 행의 패턴을 나타낸다. P(5) 다음처럼 나타난다. P(20)을 쿼리하라

 

우선 여기서 처음보는 함수가 나왔다. Repeat이란 함수다. REPEAT 함수는 문자열을 여러번 반복할 때 쓰는 함수다.

 

프로토타입

REPEAT(str, count)

문자열 str을 count번 할 때 쓰이는 함수다. 

 

📌 예시:

SELECT REPEAT('* ', 5);

 

🟰 결과:

* * * * *
SELECT REPEAT('abc', 3);

🟰 결과:

abcabcabc

 

여기까지 REPEAT 함수. 이제 문제로 돌아 가 보자

WITH RECURSIVE TEMP AS(
    SELECT 20 AS n
    UNION ALL
    SELECT n - 1 FROM TEMP WHERE n > 0
)
SELECT REPEAT('* ', n) FROM TEMP

문제에서 재귀 with과 Repeat 함수를 썼다. 재귀 WITH으로 숫자를 둔다. 이 숫자는 훗날 Repeat에 쓰인다. 재귀에 쓰인 n은 숫자가 되어 20부터 1까지 나오고 이걸 Repeat에 쓰면 

n = 20일 때

* *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  * 

n = 19일 때

*  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  * 

이런식으로 n이 1이 될때 까지 반복하면 정답 패턴이 나온다.