본문 바로가기
PROGRAMMING/LeetCode

[Leetcode] 180. Consecutive Numbers_해설, 풀이, 설명

by HYUNHP 2022. 9. 3.
728x90
반응형

안녕하세요, HELLO

 

오늘은 Leetcode 알고리즘 문제 '180. Consecutive Numbers'에 대해서 살펴보고자 합니다. 

 

알고리즘 문제, 코드, 해설 그리고 Leetcode에서 제공해준 solution 순서대로 정리하였습니다.


STEP 1. 'Consecutive Numbers' 알고리즘 문제

 

STEP 2. 'Consecutive Numbers' 코드(code)

 

STEP 3. 'Consecutive Numbers' 해설

 

STEP 4. 'Consecutive Numbers' solution

 

반응형

 

STEP 1. 'Consecutive Numbers' 알고리즘 문제

Write an SQL query to find all numbers that appear at least three times consecutively.

Return the result table in any order.

 

최소한 Logs 테이블에 num 열의 정보가 연속적으로 3번 나오는 모든 숫자를 찾는 쿼리를 작성합니다.

이때, 반환하는 테이블의 순서는 상관없습니다.

 

The query result format is in the following example.


STEP 2. 'Consecutive Numbers' 코드(code)

 

■ Runtime: Runtime: 508 ms, faster than 70.47% of MySQL online submissions for Consecutive Numbers.
■ Memory Usage: Memory Usage: 0B, less than 100.00% of MySQL online submissions for Consecutive Numbers.

 

# Write your MySQL query statement below

SELECT distinct(L1.num) AS ConsecutiveNums
FROM Logs as L1
JOIN Logs as L2 on L1.id = L2.id +1
LEFT JOIN Logs as L3 on L1.id = L3.id +2
WHERE L1.num = L2.num and L1.num = L3.num
;

STEP 3. 'Consecutive Numbers' 해설

 

최소 3번 이상 연속적으로 나와야 되기에, Logs 테이블을 세 개로 복제하며, 이때 id를 기준 테이블에서 +1, +2를 해서 하나의 테이블로 만듧니다. 그리고 해당 테이블에서 조건 column인 num가 모두 일치하는 distinct 숫자를 찾습니다.

 

 

STEP 4. 'Consecutive Numbers' solution

 

추가적으로, Leetcode에서 제공해준 solution 코드를 살펴보겠습니다.

 

■ Runtime: Runtime: 447 ms, faster than 85.89% of MySQL online submissions for Consecutive Numbers.
■ Memory Usage: Memory Usage: 0B, less than 100.00% of MySQL online submissions for Consecutive Numbers.

 

select distinct a1.num as ConsecutiveNums
from logs a1 join logs a2 on a1.id = a2.id + 1 and a1.num = a2.num
join logs a3 on a1.id = a3.id + 2 and a1.num = a3.num

■ 마무리

 

오늘은 Leetcode 알고리즘 문제 '180. Consecutive Numbers'에 대해서 알아봤습니다.

좋아요와 댓글 부탁드리며,

오늘 하루도 즐거운 날 되시길 기도하겠습니다 :)

감사합니다.

 

반응형

댓글