KATA#37

codataffee·2024년 5월 19일
0

CODEKATA

목록 보기
37/114
post-thumbnail

WHAT IS KATA?

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

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


- SQL


✔️ 문제 #1: Primary Department for Each Employee

  • 문제를 읽어보고 한참을 뭔소린가.. 했네ㅋㅋ
    • 결국 아래 예제를 보고 primary_flag 가 Y 인 department_id 에 속해있는
      employee_id 와 employee_id 가 1개만 있는 데이터들을 뽑아보기로 했다.

✔️ 제출 쿼리

✔️ 쿼리 분석

# WHERE 조건절로 primary_flag 가 'Y' 인 데이터들과
# employee_id 가 1개인 (소속 부서가 1개) 데이터만 조회
SELECT employee_id, 
       department_id
FROM Employee
WHERE primary_flag = 'Y' 
      OR employee_id 
      IN (SELECT employee_id
        FROM Employee
        GROUP BY employee_id
        HAVING COUNT(employee_id) = 1)


- PYTHON


✔️ 문제 #1: 기사단원의 무기

✔️ 제출 코드
1. 약수의 갯수를 atklist 리스트 변수에 넣고 해당 값을 limit와 비교해
power와 atklist의 값을 조건별로 더해 넣는 코드
시간초과로 실패..

  1. 약수의 갯수가 limit를 넘는지 비교하고 넘으면 power를 출력하고,
    넘지 않으면 약수의 갯수를 출력하는 함수를 먼저 지정 후,
    출력된 값들을 number 까지 더해주는 함수를 작성하여
    시간 효율성을 높인 코드로 제출 :)

✔️ 코드 분석

def atkpoint(number, limit, power):
    atk = 0
    for i in range(1, int(number**0.5) + 1):
        if number % i == 0:
            if i == number//i:
                atk += 1
            else:
                atk += 2
        if atk > limit:
            return power
    return atk
def solution(number, limit, power):
    result = 1
    for i in range(2, number + 1):
        atknum = atkpoint(i, limit, power)
        result += atknum
    return result


✔️ CHECK POINT

  • PYTHON
    • 함수를 먼저 지정하고 그 함수를 바로 정답코드에
      응용하는 방법을 처음 사용해보았다.
    • SQL의 CTE를 사용한 기분 !

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

0개의 댓글

관련 채용 정보