Tools/- SQL

[SQL] leetcode | 180. Consecutive Numbers ์˜ˆ์ œ ํ’€์ด

์Šค์œ„๋ฏผ 2025. 1. 23. 15:48

๋ฌธ์ œ

https://leetcode.com/problems/consecutive-numbers/

 

์ฝ”๋“œ

๋‚˜์˜ ๋‹ต์•ˆ

# Write your MySQL query statement below
with result as (
select *, lag(num) over (order by id) as prev_num
from logs
),
session_marker as (
select
    *,
    (case 
    when prev_num is null then 1
    when num = prev_num then 0
    else 1
    end) as marker
from result
),
session_group as (
select
    id,
    num,
    prev_num,
    sum(marker) over (order by id) as grp
from session_marker
)
select distinct num as ConsecutiveNums
from session_group
where grp in 
    (select grp
    from session_group
    group by grp
    having count(*) >= 3)

-- 5๋ถ„

 

ํƒ€ ๋ธ”๋กœ๊ทธ ๋‹ต์•ˆ

SELECT DISTINCT num0 AS ConsecutiveNums
FROM (SELECT id
            , num AS num0
            , LEAD(num, 1) OVER (ORDER BY id) AS num1
            , LEAD(num, 2) OVER (ORDER BY id) AS num2
        FROM Logs) logs
WHERE num0=num1 AND num1=num2

 

๋ฌธ์ œ ํ’€์ด

์–ด๋–ค ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ํ–‰์ด ์—ฐ์†์ ์ธ์ง€ ํŒ๋ณ„ํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.

 

์œ„์˜ ๋ฐฉ๋ฒ•์œผ๋กœ ์ฒ˜์Œ ํ•™์Šต์„ ํ•ด์„œ ๊ทธ๋Ÿฐ๊ฐ€

๋น„์Šทํ•œ ๋ฌธ์ œ๋งŒ ๋ณด๋ฉด ์„ธ์…˜ ๋งˆํ‚น -> ์„ธ์…˜ ๊ทธ๋ฃน ์ƒ์„ฑ -> ์„ธ์…˜ ๊ทธ๋ฃน ๋ณ„ ํ–‰ count ์ด๋Ÿฐ ์‹์œผ๋กœ ํ’€๊ฒŒ ๋œ๋‹ค.

 

๋ฌธ์ œ๋Š” ๊ทธ๋ ‡๊ฒŒ ํ’€์ง€ ์•Š์•„๋„ ๋  ๊ฒƒ๋“ค๋„ ์ด๋ ‡๊ฒŒ ํ‘ธ๋‹ˆ๊นŒ ์‹œ๊ฐ„๋งŒ ์žก์•„๋จน์„ ๋•Œ๊ฐ€ ์žˆ์Œ

 

์ด ๋ฌธ์ œ๋„ ์ตœ์†Œ 3๊ฐœ ์—ฐ์†๋งŒ ์ถฉ์กฑํ•˜๋Š” ์ˆซ์ž๋งŒ ๊ตฌํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์—

๋‹ค์Œ ํ–‰, ๋‹ค๋‹ค์Œ ํ–‰์„ ๋™์‹œ์— ๊ตฌํ•˜๊ณ  ๋น„๊ตํ•˜๋ฉด ๋œ๋‹ค.

 

๋‚ด๊ฐ€ ์‚ฌ์šฉํ•œ ๋ฐฉ๋ฒ•์€ ๊ฒฐ๊ณผ๊ฐ’์— ์กฐ๊ฑด์ด ๋” ๋งŽ์ด ๋“ค์–ด๊ฐˆ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒŒ ์ข‹๋‹ค.

(์ฐธ๊ณ  : https://syimmin-data-analysis.tistory.com/12)

(์ด ์˜ˆ์ œ์—์„œ๋Š” ์„ธ์…˜๋งˆ๋‹ค ์‹œ๊ฐ„์˜ ์ตœ์†Œ, ์ตœ๋Œ€๊ฐ’์„ ๊ตฌํ•ด์•ผ ํ–ˆ๋‹ค)

 

๋А๋‚€ ์ 

๋ฌธ์ œ๋ฅผ ์ฝ๊ณ  ์–ด๋–ค ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒŒ ์ ์ ˆํ• ์ง€ ์ƒ๊ฐํ•ด๋ณด๊ณ  ์ฝ”๋“œ๋ฅผ ์งœ์ž!