KATA#60

codataffee·2024년 6월 12일
0

CODEKATA

목록 보기
60/114
post-thumbnail

WHAT IS KATA?

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

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


- SQL


✔️ 문제 #1: Employee Salaries

✔️ 제출 쿼리

✔️ 쿼리 분석

SELECT name
FROM Employee
WHERE salary > 2000 
     AND months < 10


- PYTHON


✔️ 문제 #1: n^2 배열 자르기

✔️ 제출 코드

✔️ 코드 분석

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


✔️ CHECK POINT

  • PYTHON
    • 𝑛×𝑛 행렬을 특정 규칙에 따라 1차원 배열로 변환하고,
      주어진 구간의 부분 배열을 반환하는 문제,
    • 𝑛 이 매우 클 경우 전체 행렬을 생성하는 것은 비효율적
      필요한 값만 직접 계산하는 방법 사용
    # 코드 정리
    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      

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

0개의 댓글

관련 채용 정보