KATA#16

codataffee·2024년 4월 25일
0

CODEKATA

목록 보기
16/114
post-thumbnail

WHAT IS KATA?

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

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


- SQL


✔️ 문제 #1: 특정 옵션이 포함된 자동차 리스트 구하기

✔️ 제출 쿼리

✔️ 쿼리 분석

SELECT *
FROM CAR_RENTAL_COMPANY_CAR
WHERE OPTIONS LIKE '%네비게이션%'
ORDER BY CAR_ID DESC


✔️ 문제 #2: 조건에 부합하는 중고거래 상태 조회하기

✔️ 제출 쿼리

✔️ 쿼리 분석

SELECT BOARD_ID,
       WRITER_ID,
       TITLE,
       PRICE,
       CASE WHEN `STATUS` = 'SALE' THEN '판매중'
            WHEN `STATUS` = 'RESERVED' THEN '예약중'
            WHEN `STATUS` = 'DONE' THEN '거래완료'
            END AS `STATUS`
FROM USED_GOODS_BOARD
WHERE CREATED_DATE LIKE '2022-10-05'
ORDER BY 1 DESC


✔️ 문제 #3: 취소되지 않은 진료 예약 조회하기


✔️ 제출 쿼리

✔️ 쿼리 분석

SELECT AP.APNT_NO,
       AP.PT_NAME,
       AP.PT_NO,
       AP.MCDP_CD,
       D.DR_NAME,
       AP.APNT_YMD
FROM 
        (
        SELECT A.APNT_NO,
               P.PT_NAME,
               A.PT_NO,
               A.MCDP_CD,
               A.APNT_YMD,
               A.MDDR_ID
        FROM PATIENT P INNER JOIN APPOINTMENT A
             ON P.PT_NO = A.PT_NO
        WHERE SUBSTR(A.APNT_YMD,1,10) = '2022-04-13' 
              AND A.APNT_CNCL_YN = 'N' 
              AND A.MCDP_CD = 'CS'
        ) AP INNER JOIN DOCTOR D
        ON AP.MDDR_ID = D.DR_ID
ORDER BY AP.APNT_YMD


- PYTHON


✔️ 문제 #1: 자연수 뒤집어 배열로 만들기

✔️ 제출 코드

✔️ 코드 분석

def solution(n):
    answer = [int(i) for i in reversed(str(n))]
    return answer
def solution(n):
    answer = []
    n = str(n)
    for i in n:
        i=int(i)
        answer.append(i)
    answer.reverse()
    return answer


✔️ 문제 #2: 문자열을 정수로 바꾸기

✔️ 제출 코드

✔️ 코드 분석

def solution(s):
    answer = int(s)
    return answer


✔️ 문제 #3: 정수 제곱근 판별

✔️ 제출 코드

✔️ 코드 분석

def solution(n):
    #n의 제곱근 구하기 (루트 씌우기)
    n = n ** (0.5)
    #n이 정수면 n+1의 제곱 리턴
    if n % 1 == 0:
        return (n+1)**2
    #아닐경우 -1 리턴
    else:
        return -1
    
    
def solution(n):
    # n의 제곱근에 n의 제곱근을 정수화한 수치를 뺐을 때 0
    # 결국 n이 정수라면, ((n의 제곱근)+1)의 제곱근 리턴, 아니면 -1 리턴
    if n**(1/2) - int(n**(1/2)) == 0:
        return((n**(1/2))+1)**2
    return -1


✔️ CHECK POINT

  • SQL
    • 테이블을 조인할 때, 전체 칼럼을 조회하면 (*)
      두 테이블 간 같은 칼럼명을 가진 칼럼에서 중복 에러가 난다.

    • 칼럼명이 중복되는 오류를 방지하기 위해서는
      테이블 조인 후 원하는 칼럼명을 직접 작성하여
      조회하는 습관을 들이는 것이 좋겠다.
  • PYTHON
    • for문 반복 시, 입력값이 문자열일 경우 문자열 내 첫번째 문자부터
      1개 문자씩 순서대로 입력
      되어 실행된다.
      n = 12345
      n = str(n)
      for i in n:

      순서: i = 1 → i = 2 → i = 3 → i = 4 → i = 5

      +) 제곱근을 표현하는 방법.
      n**(0.5) 또는 n**(1/2)

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

0개의 댓글

관련 채용 정보