2024-11-03

Suhyeon Lee·2024년 11월 3일
0

자기주도학습

목록 보기
44/83

CodeKata

SQL

90. Confirmation Rate

  • 작성한 쿼리
WITH conf_rate AS (
  SELECT
    user_id
    , COUNT(CASE WHEN action='confirmed' THEN 1 END)
    /(COUNT(CASE WHEN action='timeout' THEN 1 END)+COUNT(CASE WHEN action='confirmed' THEN 1 END)) AS confirmation_rate
  FROM
    confirmations
  GROUP BY
    user_id
)
SELECT
  s.user_id
  , ROUND(IFNULL(confirmation_rate, 0), 2) AS confirmation_rate
FROM
  signups s
  LEFT JOIN conf_rate c
  USING(user_id)

Python

30. 가운데 글자 가져오기

  • 작성한 코드
def solution(s):
    answer = ''
    i = len(s)//2
    if len(s) % 2 == 0:
        answer += s[i-1:i+1]
    else:
        answer += s[i]
    return answer

→ 더 짧게 쓸 수 있지 않을까?

def solution(s):
    return s[(len(s)-1)//2 : len(s)//2 + 1]

→ 추가로 아래와 같이 작성했더니 테스트 케이스 1, 2, 3을 통과하지 못했음… 왜지?

def solution(s):
    a = len(s)
    if a % 2 == 0 :
        a = (a-2) / 2
    else :
        a = (a-1) / 2
    return s[int(a) : -int(a)]

🡆 단어 길이가 1일 경우(e.g. 'a') 해당 코드로 출력이 안 됨!
🡆 단어 길이가 2일 경우(e.g. 'in') 해당 코드로 출력이 안 됨!

참고할 만한 다른 풀이

solution = lambda s: s[(len(s) - 1) // 2 : len(s) // 2 + 1]

31. 수박수박수박수박수박수?

  • 작성한 코드
def solution(n):
    answer = ''
    for i in range(1, n+1):
        if i % 2 == 1:
            answer += '수'
        else:
            answer += '박'
    return answer

→ 더 짧은 방법도 생각해 보았음

def solution(n):
    answer = '수박'*(n//2+1)
    return answer[:n]

참고할 만한 다른 풀이

def solution(n):
    return '수박'*(n//2) + '수'(n%2)
def solution(n):
    return "".join(["수박"[i%2] for i in range(n)])
def solution(n):
   return "수박" * int(n/2) + "수" if n % 2 else "수박" * int(n/2)

🡆 개인적으로는 2번이 가장 괜찮아 보임

팀 과제 분석

TFT 데이터 분석

회고

  • ADsP 시험 너무 어려웠음
    • 내년에 다시 봐야할 것 같다😥
profile
2 B R 0 2 B

0개의 댓글

관련 채용 정보