KATA는 기술과 기술 향상에 초점을 맞춘 코드 챌린지입니다.
일부는 프로그래밍 기본 사항을 교육하는 반면 다른 일부는 복잡한 문제 해결에 중점을 둡니다.
이 용어는 The Pragmatic Programmer 라는 책의 공동 저자인 Dave Thomas 가
무술에서 일본의 카타 개념을 인정하면서 처음 만들어졌습니다.
Dave의 개념 버전은 코드 카타를 프로그래머가
연습과 반복을 통해 기술을 연마하는 데 도움이 되는 프로그래밍 연습으로 정의합니다.
✔️ 제출 쿼리
✔️ 쿼리 분석
SELECT name
FROM Employee
WHERE salary > 2000
AND months < 10
✔️ 제출 코드
✔️ 코드 분석
1. 행렬 값 : 𝑛 × 𝑛
n × n 행렬의 위치 1 기준 인덱스 (x, y)에서 값 :
두 인덱스 중 더 큰 max(x, y) + 1
2. 행렬을 1차원 배열로 변환: 0 기반 1차원 배열에서:
(x, y)에 있는 원소의 위치는 x * n + y
3. 직접 계산: 주어진 인덱스 i에서 행(x)과 열(y)을 정수 나눗셈과 나머지 연산으로 찾기 :
x = i // n
y = i % n
이 위치의 값은 max(x, y) + 1
4. 부분 배열 생성:
위의 공식을 사용, left에서 right까지의 인덱스에 대한 값을 직접 계산
def solution(n, left, right):
result = []
for i in range(left, right + 1):
x = i // n
y = i % n
# 넣을 값은 (x, y 좌표 중 큰 값) + 1
# [0][0]=1 [0][1]=2 [0][2]=3 [0][3]=4
# [1][0]=2 [1][1]=2 [1][2]=3 [1][3]=4
# [2][0]=3 [2][1]=3 [2][2]=3 [2][3]=4
# [3][0]=4 [3][1]=4 [3][2]=4 [3][3]=4
result.append(max(x, y) + 1)
return result
# 코드 정리
1. 행렬 값 : 𝑛 × 𝑛
n × n 행렬의 위치 1 기준 인덱스 (x, y)에서 값 :
두 인덱스 중 더 큰 max(x, y) + 1
2. 행렬을 1차원 배열로 변환: 0 기반 1차원 배열에서:
(x, y)에 있는 원소의 위치는 x * n + y
3. 직접 계산:
주어진 인덱스 i에서 행(x)과 열(y)을 정수 나눗셈과 나머지 연산으로 찾기 :
x = i // n
y = i % n
이 위치의 값은 max(x, y) + 1
4. 부분 배열 생성:
위의 공식을 사용, left에서 right까지의 인덱스에 대한 값을 직접 계산
def solution(n, left, right):
result = []
for i in range(left, right + 1):
x = i // n
y = i % n
# 넣을 값은 (x, y 좌표 중 큰 값) + 1
# [0][0]=1 [0][1]=2 [0][2]=3 [0][3]=4
# [1][0]=2 [1][1]=2 [1][2]=3 [1][3]=4
# [2][0]=3 [2][1]=3 [2][2]=3 [2][3]=4
# [3][0]=4 [3][1]=4 [3][2]=4 [3][3]=4
result.append(max(x, y) + 1)
return result