KATA#68

codataffee·2024년 6월 20일
0

CODEKATA

목록 보기
68/114
post-thumbnail

WHAT IS KATA?

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

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


- SQL


✔️ 문제 #1: Weather Observation Station 13

✔️ 제출 쿼리

✔️ 쿼리 분석

SELECT TRUNCATE(SUM(LAT_N), 4)
FROM STATION
WHERE LAT_N BETWEEN 38.7880 AND 137.2345


- PYTHON


✔️ 문제 #1: k 진수에서 소수 개수 구하기

✔️ 제출 코드

✔️ 코드 분석

# 문제 단계별 진행
# 1. n을 k진수로 변환 : 정수 n을 k진수로 변환
# 2. k진수 문자열을 0 기준으로 분리 : 변환된 k진수 문자열을 '0'을 기준으로 분리하여 소수 후보들 추출
# 3. 소수 판별 함수 작성 : 각 후보 숫자가 소수인지 판별하는 함수 작성
# 4. 소수 갯수 계산: 조건에 맞는 소수의 갯수 카운팅

def is_prime(num):
    # 숫자가 소수인지 판별하는 함수
    if num <= 1:
        return False  # 1 이하의 숫자는 소수가 아님
    if num == 2:
        return True  # 2는 소수
    if num % 2 == 0:
        return False  # 짝수는 소수가 아님
    sqr = int(num**0.5) + 1  # 숫자의 제곱근을 구함
    for divisor in range(3, sqr, 2):
        if num % divisor == 0:
            return False  # 약수가 존재하면 소수가 아님
    return True  # 위 조건을 모두 통과하면 소수

def solution(n, k):
    # 주어진 n을 k진수로 변환하고 조건에 맞는 소수의 개수를 세는 함수
    
    # 1. : n을 k진수로 변환
    k_base_str = ""
    while n > 0:
        k_base_str = str(n % k) + k_base_str  # n을 k로 나눈 나머지를 문자열에 추가
        n //= k  # n을 k로 나눈 몫으로 갱신
    
    # 2 : k진수 문자열을 0 기준으로 분리
    candidates = k_base_str.split('0')  # '0'을 기준으로 문자열 분리
    
    # 3: 소수 판별 함수
    prime_count = 0
    for candidate in candidates:
        if candidate and is_prime(int(candidate)):  # 빈 문자열이 아니고 소수이면
            prime_count += 1  # 소수 개수 증가
    
    return prime_count  # 최종 소수 개수 반환


✔️ CHECK POINT

  • SQL

    • TRUNCATE 함수 : 소수점 N번째 자리까지만 출력, 이후 소수점 절삭
      # 소수점 4번째까지만 출력
      SELECT TRUNCATE(SUM(LAT_N), 4)
      FROM STATION
      WHERE LAT_N BETWEEN 38.7880 AND 137.2345
  • PYTHON

    • 문제를 단계별로 나누어 큰 틀을 잡고 코딩하는 습관 들이기

      문제 단계별 진행
      # 1. n을 k진수로 변환 : 정수 n을 k진수로 변환
      # 2. k진수 문자열을 0 기준으로 분리 : 
      #    변환된 k진수 문자열을 '0'을 기준으로 분리하여 소수 후보들 추출
      # 3. 소수 판별 함수 작성 : 각 후보 숫자가 소수인지 판별하는 함수 작성
      # 4. 소수 갯수 계산 : 조건에 맞는 소수의 갯수 카운팅
      
      def is_prime(num):
      # 숫자가 소수인지 판별하는 함수
      if num <= 1:
          return False  # 1 이하의 숫자는 소수가 아님
      if num == 2:
          return True  # 2는 소수
      if num % 2 == 0:
          return False  # 짝수는 소수가 아님
      sqr = int(num**0.5) + 1  # 숫자의 제곱근을 구함
      for divisor in range(3, sqr, 2):
          if num % divisor == 0:
              return False  # 약수가 존재하면 소수가 아님
      return True  # 위 조건을 모두 통과하면 소수
      
      def solution(n, k):
      # 주어진 n을 k진수로 변환하고 조건에 맞는 소수의 개수를 세는 함수
      
      # 1. : n을 k진수로 변환
      k_base_str = ""
      while n > 0:
          k_base_str = str(n % k) + k_base_str  # n을 k로 나눈 나머지를 문자열에 추가
          n //= k  # n을 k로 나눈 몫으로 갱신
      
      # 2 : k진수 문자열을 0 기준으로 분리
      candidates = k_base_str.split('0')  # '0'을 기준으로 문자열 분리
       
      # 3: 소수 판별 함수
      prime_count = 0
      for candidate in candidates:
          if candidate and is_prime(int(candidate)):  # 빈 문자열이 아니고 소수이면
              prime_count += 1  # 소수 개수 증가
      
      return prime_count  # 최종 소수 개수 반환

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

0개의 댓글

관련 채용 정보