37일차

Suhyeon Lee·2024년 11월 21일

CodeKata

SQL

109. Consecutive Numbers

  • 작성한 쿼리
WITH lead_lag AS (
  SELECT
    LAG(id) OVER (ORDER BY id) AS prev_id
    , id
    , LEAD(id) OVER (ORDER BY id) AS next_id
    , LAG(num) OVER (ORDER BY id) AS prev_num
    , num
    , LEAD(num) OVER (ORDER BY id) AS next_num
  FROM
    Logs
)
SELECT
  DISTINCT num AS ConsecutiveNums
FROM
  lead_lag
WHERE
  prev_num = num
  AND next_num = num
  AND next_id - id = 1
  AND id - prev_id = 1
;

참고할 만한 다른 풀이

  • JOIN 사용
select
  distinct l1.num as ConsecutiveNums
from
  Logs l1
  join Logs l2 
  on l1.num = l2.num and l2.id = l1.id + 1
  join logs l3 
  on l2.num = l3.num and l3.id = l2.id + 1
SELECT 
  DISTINCT l1.num AS ConsecutiveNums
FROM 
  Logs l1
  JOIN Logs l2 ON l1.id = l2.id - 1
  JOIN Logs l3 ON l1.id = l3.id - 2
WHERE 
  l1.num = l2.num 
  AND l2.num = l3.num
;
  • LEAD, LAG
WITH CTE AS(
  SELECT 
    id
    , num
    , LAG(num,1) OVER(ORDER BY id) AS prev_num
    , LEAD(num,1) OVER(ORDER BY id) AS next_num
  FROM 
    Logs
)
SELECT 
  DISTINCT num AS ConsecutiveNums
FROM 
  CTE
WHERE 
  num=next_num 
  AND num=prev_num
;
  • EXISTS
SELECT
  DISTINCT l1.num AS ConsecutiveNums
FROM
  Logs l1
WHERE 
  EXISTS (
    SELECT
      1
    FROM
      Logs l2
    WHERE
      l2.id = l1.id + 1 AND l2.num = l1.num
      AND EXISTS (
        SELECT
          1
        FROM
          Logs l3
        WHERE
          l3.id = l1.id + 2 AND l3.num = l1.num
      )
  )
;

Python

46. 숫자 문자열과 영단어

  • 작성한 코드
def solution(s):
    answer = 0
    unit_eng = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
    for i, a in enumerate(unit_eng):
        s = s.replace(a, str(i))
    answer = int(s)
    return answer

참고할 만한 다른 풀이

  • 딕셔너리
num_dic = {"zero":"0", "one":"1", "two":"2", "three":"3", "four":"4", "five":"5", "six":"6", "seven":"7", "eight":"8", "nine":"9"}

def solution(s):
    answer = s
    for key, value in num_dic.items():
        answer = answer.replace(key, value)
    return int(answer)
  • .isnumeric()
def solution(s):
    result = ""
    tmp = ""
    arr = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']

    for j in s:
        if(j.isnumeric()):
            result+=j
        else:
            tmp+=j
            if tmp in arr:
                result+=str(arr.index(tmp))
                tmp=""
    return int(result)

라이브 세션

통계야 놀자 6회차
머신러닝 빌드업 1회차

머신러닝 강의

심화 2주차

SDL

추가 공부

회고

  • 통계학 라이브 세션 종료~
    • 내용 다시 복습해야겠다!
  • 머신러닝 라이브 세션 시작
    • 오늘 내용은 간단한 소개 같은 거여서 이해하기 괜찮았음
  • 내일 QCC 3차 있는데 이번엔 진짜 문제를 잘 읽고 신중하게 풀어야겠다.
profile
2 B R 0 2 B

0개의 댓글