KATA#46

codataffee·2024년 5월 28일
0

CODEKATA

목록 보기
46/114
post-thumbnail

WHAT IS KATA?

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

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


- SQL


✔️ 문제 #1: Fix Names in a Table

✔️ 제출 쿼리

✔️ 쿼리 분석

SELECT user_id
     , CONCAT(UPPER(LEFT(name,1)), LOWER(RIGHT(name,LENGTH(name)-1))) name 
FROM Users
ORDER BY user_id


✔️ 문제 #2: Patients With a Condition

✔️ 제출 쿼리

✔️ 쿼리 분석

SELECT patient_id
     , patient_name
     , conditions
FROM Patients
WHERE conditions LIKE '% DIAB1%'
      OR conditions LIKE 'DIAB1%'


- PYTHON


✔️ 문제 #1: 햄버거 만들기

✔️ 제출 코드

✔️ 코드 분석

def solution(ingredient):
    # 햄버거 포장 순서 리스트
    hamburger = [1,2,3,1]
    # 쌓인 재료 리스트
    stack = []
    answer = 0
    # ingredient 순서대로 stack에 리스트화
    for i in ingredient:
        stack.append(i)
        # stack 에 하나씩 쌓여가는동안 뒤에서부터 4개의 숫자가
        # 햄버거의 포장 순서 리스트와 동일하다면
        if stack[-4:] == hamburger:
            # 해당 stack 지우고 포장된 햄버거 수(answer) 1개 추가
            del stack[-4:]
            answer += 1
    return answer


✔️ 문제 #2: 성격 유형 검사하기

✔️ 제출 코드

✔️ 코드 분석

def solution(survey, choices):
    # 성격 유형 검사 점수
    survey_score = {
        "R" : 0,
        "T" : 0,
        "C" : 0,
        "F" : 0,
        "J" : 0,
        "M" : 0,
        "A" : 0,
        "N" : 0
    }
    # 성격 유형 선택한 점수
    choice = {
        1 : 3,
        2 : 2,
        3 : 1,
        4 : 0,
        5 : 1,
        6 : 2,
        7 : 3
    }
    # 결과 담을 변수
    result = ""
    # survey 문자열과 choices 선택지 리스트 zip 함수로
    # type과 point로 불러와 반복
    for type, point in zip(survey, choices):
        # 선택지가 4를 기준으로 작거나 큰 경우에 따라
        # type 문자열의 앞(왼쪽), 뒤(오른쪽)으로 나누어 점수 추가
        if point < 4:
            survey_score[type[0]] += choice[point]
        elif point >= 5:
            survey_score[type[1]] += choice[point]
    # 성격 유형 검사 점수에 반영된 각 지표별 점수를 키값으로 리스트화
    # 예: {'R': 0, 'T': 3, 'C': 1, 'F': 0, 'J': 0, 'M': 2, 'A': 1, 'N': 1}
    survey_keys = list(survey_score.keys())
    # l에 survey_keys 리스트 값 중 첫번째부터 2개씩 건너 뛰면서 반복
    # r에 survey_keys 리스트 값 중 두번째부터 2개씩 건너 뛰면서 반복
    # 각 성격 유형 지표별로 값을 비교
    for l, r in zip(survey_keys[::2], survey_keys[1::2]):
        if survey_score[l] >= survey_score[r]:
            result += l
        elif survey_score[l] < survey_score[r]:
            result += r
    
    return result


✔️ CHECK POINT

  • SQL
    • 문자열을 LEFT RIGHT 함수와 CONCAT으로 합쳐 원하는대로 만들어내는 과정,
      SQL 챌린지에서 배웠던 내용들을 실습해보는 느낌으로 접근했다.
  • PYTHON
    • 딕셔너리 생성으로 원하는 키에 값을 넣는 방법과
      해당 값을 원하는 값과 비교하여 최종 문자열을 만들어내는 과정..
      어렵지만 한 줄 한 줄 이해하면서 넘어갈 수 있게 노력했다.

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

0개의 댓글

관련 채용 정보