/////
Search
Duplicate

Draw The Triangle 1

태그
Select
String
전역변수
한 번 더 체크

문제

P(R) represents a pattern drawn by Julia in R rows. The following pattern represents P(5):
* * * * * * * * * * * * * * *
Plain Text
복사
Write a query to print the pattern P(20).

정답

SET @r1 = 21; SELECT REPEAT('* ', @r1 := @r1-1) FROM information_schema.tables WHERE @r1 > 1;
SQL
복사

풀이

전역변수와 REPEAT의 사용법을 묻는 문제이다.
우선 전역 변수로 21의 값을 갖는 변수를 생성한다.
SET @r1 = 21;
SQL
복사
그 다음 REPEAT을 활용해서 전역변수 값의 -1만큼 ‘* ‘를 출력한다. (이때 공백이 있어야 함)
SELECT REPEAT('* ', @r1 := @r1-1)
SQL
복사
FROM 절에서는 참조할 수 있는 더미 테이블이 필요하다. 더미 테이블을 참조하지 않으면 SELECT가 한 번만 작동하고 끝나버리기 때문에 반드시 필요.
FROM information_schema.tables
SQL
복사
마지막으로 r1이 1 초과일때까지만 돌아가게 해야 별이 하나까지 출력되고 끝난다.
WHERE절이 SELECT절보다 먼저 수행되기 때문.
즉, r1=2 인 경우 WHERE 절 조건을 만족하고 REPEAT(’* ‘, 1) 을 수행한다.
r1=1인 경우 WHERE 절 조건을 만족하지 못하므로 반복문이 끝난다.
WHERE @r1 > 1;
SQL
복사