Print Prime Numbers : HackerRank

오유찬·2025년 12월 23일

SQL

목록 보기
27/70

SQL로 소수 구하기

범위 1 ~ 1000 : 데이터셋이 주어지지 않았기 때문에 간단하게 만들어준다.

WITH RECURSIVE prime
AS	(
	SELECT 2 as p
    UNION ALL
    SELECT p + 1 
    FROM prime
    WHERE p < 1000
  	)

만든 데이터셋을 바탕으로 소수를 구한다.
소수는 1과 자기 자신 이외에는 약수가 없는 수이므로 이를 활용한다.

SELECT	p
FROM	prime p1
WHERE	NOT EXISTS (
			SELECT	1
            FROM	prime p2
            WHERE	p2.p < p1.p
            AND		p1.p % p2.p = 0
       	)

정답의 형식이 2&3&5&7과 같은 형식의 한 줄 짜리 문자열이므로 GROUP_CONCAT으로 이어준다.

answer

WITH RECUSRIVE prime
AS (
	SELECT 2 as p
    UNION ALL
    SELECT 	p + 1
    FROM	prime
    WHERE	p < 1000
)

SELECT	GROUP_CONCAT(p SEPARATOR '&')
FROM	prime p1
WHERE	NOT EXISTS (
		SELECT	1
        FROM	prime p2
        WHERE	p2.p < p1.p
        AND		p1.p % p2.p = 0
)
profile
열심히 하면 재밌다

0개의 댓글