MySQL 해커랭크 | Draw The Triangle ( *로 (역)직각삼각형 만들기, SQL식 반복문 >> 재귀쿼리, 재귀함수, REPEAT함수)
직각삼각형 만들기 문제
https://www.hackerrank.com/challenges/draw-the-triangle-2/problem?isFullScreen=true
Draw The Triangle 2 | HackerRank
Draw the triangle pattern using asterisks.
www.hackerrank.com
- P(R) represents a pattern drawn by Julia in R rows.
- Write a query to print the pattern P(20)
# 직각삼각형 예시 P(5)
P(5) |
![]() |
풀이과정
- 재귀쿼리와 REPEAT 함수로 풀 수 있음
- 재귀쿼리 → WITH RECURSIVE 테이블명 AS( )
- REPEAT 함수 → * 기호의 반복 횟수를 +1씩 늘리면서 20보다 커지지 않을 만큼 재귀쿼리를 돌리게 함
▶ WITH RECURSIVE 재귀쿼리
https://inpa.tistory.com/entry/MYSQL-%F0%9F%93%9A-RECURSIVE-%EC%9E%AC%EA%B7%80-%EC%BF%BC%EB%A6%AC
[MYSQL] 📚 RECURSIVE (재귀 쿼리)
WITH RECURSIVE 문 (재귀 쿼리) 프로그래밍에서 재귀 함수를 들어봤듯이, SQL에서도 재귀 쿼리 기법이 존재한다. 다만 문법이 굉장히 해괴한데 우선 WITH RECURSIVE 쿼리문을 작성하고 내부에 UNION을 통해
inpa.tistory.com
▶ REPEAT, REVERSE 함수
- REPEAT('문자열', 반복횟수)
- REVERSE('문자열')
https://blog.naver.com/kkh0977/222479879846
36. (MYSQL/SQL) REPEAT , REVERSE 사용해 문자열 반복 출력 및 문자열 거꾸로 출력 실시
[개발 환경 설정] 개발 툴 : Heidi 개발 언어 : Mysql [소스 코드] [결과 출력] [요약 설명] /* [REP...
blog.naver.com
# 정답 : P(20) 만들기
1 2 3 4 5 6 7 8 9 10 11 | WITH RECURSIVE pat AS( SELECT 1 AS st UNION SELECT st + 1 FROM pat WHERE st < 20 ) SELECT REPEAT('* ', st) FROM pat -- 오답 : EXISTS(SELECT * FROM pn ppn WHERE (ppn.st <= SQRT(pn.st)) AND (pn.st % ppn.st != 0)) | cs |
역 직각삼각형 만들기 문제
https://www.hackerrank.com/challenges/draw-the-triangle-1/problem?isFullScreen=true
Draw The Triangle 1 | HackerRank
Draw the triangle pattern using asterisks.
www.hackerrank.com
- P(R) represents a pattern drawn by Julia in R rows.
- Write a query to print the patternP(20).
# 직각삼각형 예시 P(5)
P(5) |
![]() |
풀이과정
- 위에서 직각삼각형을 만든 것을 응용해서 이번엔 재귀 쿼리 규칙을
* 기호의 반복 횟수를 -1씩 줄이면서 0보다 작아지지 않을 만큼 재귀쿼리를 돌리게 함
# 정답 : P(20) 만들기
1 2 3 4 5 6 7 8 9 10 | WITH RECURSIVE pat AS( SELECT 20 AS ed UNION SELECT ed - 1 FROM pat WHERE ed > 0 ) SELECT REPEAT('* ', ed) FROM pat | cs |
# 더 알아보기 : @ROWNUM := @ROWNUM + 1
- 초기화 → SET @ROWNUM := 0
- 조회 → SELECT @ROWNUM := @ROWNUM+1, 테이블명.*
https://developer-jjun.tistory.com/23
[MySQL] ROWNUM을 사용하여 번호매기기
MySQL에서 Oracle처럼 ROWNUM 사용법 SET구문을 사용하여 ROWNUM 값을 초기화 후 조회 SET @rownum:=0; SELECT @rownum:=@rownum+1, b.* FROM buyingboard b WHERE절에서 초기화 SELECT @rownum:=@rownum+1, b.* FROM buyingboard b WHERE (@rown
developer-jjun.tistory.com
https://developer-jjun.tistory.com/23
[MySQL] ROWNUM을 사용하여 번호매기기
MySQL에서 Oracle처럼 ROWNUM 사용법 SET구문을 사용하여 ROWNUM 값을 초기화 후 조회 SET @rownum:=0; SELECT @rownum:=@rownum+1, b.* FROM buyingboard b WHERE절에서 초기화 SELECT @rownum:=@rownum+1, b.* FROM buyingboard b WHERE (@rown
developer-jjun.tistory.com