KATA는 기술과 기술 향상에 초점을 맞춘 코드 챌린지입니다.
일부는 프로그래밍 기본 사항을 교육하는 반면 다른 일부는 복잡한 문제 해결에 중점을 둡니다.
이 용어는 The Pragmatic Programmer 라는 책의 공동 저자인 Dave Thomas 가
무술에서 일본의 카타 개념을 인정하면서 처음 만들어졌습니다.
Dave의 개념 버전은 코드 카타를 프로그래머가
연습과 반복을 통해 기술을 연마하는 데 도움이 되는 프로그래밍 연습으로 정의합니다.
✔️ 제출 쿼리
✔️ 쿼리 분석
SELECT TRUNCATE(SUM(LAT_N), 4)
FROM STATION
WHERE LAT_N BETWEEN 38.7880 AND 137.2345
✔️ 제출 코드
✔️ 코드 분석
# 문제 단계별 진행
# 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 # 최종 소수 개수 반환
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 # 최종 소수 개수 반환