KATA#38

codataffee·2024년 5월 20일
0

CODEKATA

목록 보기
38/114
post-thumbnail

WHAT IS KATA?

KATA는 기술과 기술 향상에 초점을 맞춘 코드 챌린지입니다.
일부는 프로그래밍 기본 사항을 교육하는 반면 다른 일부는 복잡한 문제 해결에 중점을 둡니다.

이 용어는 The Pragmatic Programmer 라는 책의 공동 저자인 Dave Thomas 가
무술에서 일본의 카타 개념을 인정하면서 처음 만들어졌습니다.
Dave의 개념 버전은 코드 카타를 프로그래머가
연습과 반복을 통해 기술을 연마하는 데 도움이 되는 프로그래밍 연습으로 정의합니다.


- SQL


✔️ 문제 #1: Triangle Judgement

✔️ 제출 쿼리

✔️ 쿼리 분석

# 삼각형의 조건 : 두 변의 길이의 합이 나머지 한 변의 길이보다 크다.
# 초등학교 때 배웠던 건가.. 기억 안날 뻔
SELECT x, y, z,
       CASE WHEN (x + y > z) AND (y + z > x) AND (z + x > y) THEN "Yes"
       ELSE "No" END triangle
FROM Triangle


✔️ 문제 #2: Consecutive Numbers

✔️ 제출 쿼리

✔️ 쿼리 분석

# 3개의 연속적인 값을 비교하기 위해 셀프조인을 3번까지 넣어봤다.
# 조건절을 AND 로 4번이나 묶었지만 성능이 크게 떨어지지는 않은 듯 했다.
# 데이터가 많으면 CTE로 한번 정리하고 조회하는 방법도 있을 듯 !
SELECT DISTINCT l1.num ConsecutiveNums
FROM Logs l1, Logs l2, Logs l3
WHERE l3.id - l2.id = 1 
      AND l2.id - l1.id = 1
      AND l1.num = l2.num 
      AND l2.num = l3.num


- PYTHON


✔️ 문제 #1: 로또의 최고 순위와 최저 순위

✔️ 제출 코드

✔️ 코드 분석

def solution(lottos, win_nums):
	# 당첨 순위를 딕셔너리로 생성
    rankings = {
        6 : 1,
        5 : 2,
        4 : 3, 
        3 : 4,
        2 : 5,
        1 : 6,
        0 : 6
    }
	# 당첨숫자 count, 알아볼 수 없는 수 luck
    count = 0
    luck = 0
    result = []
    for i in lottos:
        if i in win_nums:
            count += 1
        elif i == 0:
            luck += 1
    # 알아볼 수 없는 수가 당첨이라면 최대 당첨 순위는 count + luck
    # 알아볼 수 없는 수가 당첨이 아니라면 최소 당첨 순위는 count
    return [rankings[count + luck], rankings[count]]


✔️ CHECK POINT

  • PYTHON
    • 딕셔너리에 키:값을 넣고 함수의 return 에 딕셔너리 키를 넣어 값을 반환하는 방법 !

profile
커피 좋아하는 데이터 꿈나무

0개의 댓글

관련 채용 정보