Code KATA | # 1

Jiwon Jung·2020년 12월 29일
0

Code KATA

목록 보기
1/7

Code KATA

코딩의 알고리즘을 구현하는 일종의 drill과 같은 것이다. 어떠한 기대 결과 값을 어떤 알고리즘과 논리로 구현하는지 연습하는 활동이라고 볼 수 있다.

우리가 Code KATA를 하는 방식은 pai programming 방식이다.
두명에서 짝을 지어서 코딩을 구현하는 방식인데, 단순히 각자 코딩을 하는 것이 아니라 하나의 코드를 둘이서 해결하는 방식이다. 비교하자면 운전자와 네비게이터라고 생각하면 된다.

안전한 운전에만 집중하는 운전자와 방향성을 제시하는 네비게이터의 역할을 각자 맡으며 하나의 프로그램을 구현한다.
이로 인해 얻을 수 있는 능력은 크게 4가지라고 생각한다.

  1. 코드 구현
  2. 소통, 협업 능력
  3. 자신의 코드 설명 및 구체화
  4. 타인의 코드 대입 및 구현

Code KATA | Day 1

문제

two_sum함수에 숫자 리스트와 '특정 수'를 인자로 넘기면,더해서 '특정 수'가 나오는 index를 배열에 담아 return해 주세요.

nums: 숫자 배열
target: 두 수를 더해서 나올 수 있는 합계
return: 두 수의 index를 가진 숫자 배열

예를 들어,

nums은 [4, 9, 11, 14]
target은 13 

nums[0] + nums[1] = 4 + 9 = 13 이죠?

그러면 [0, 1]return 되어야 합니다.

가정

target으로 보내는 합계의 조합은 배열 전체 중에 2개 밖에 없다고 가정하겠습니다.

나의 접근 방식

일단 문제를 보자마자 내가 구현해야하는 큰 뼈대는 다음 세가지로 파악했다.

  • two_sums에 주어지는 인자가 list형식이다.
  • list 요소들 중 2 수의 합이 target과 일치 해야한다.
  • list 안에서의 그 숫자의 위치를 read해야한다.

이 세가지에 대한 해결 방식으로

  • for 문을 사용하여 list안 요소들을 가져온다
  • for문 안 for문을 사용하여 두수의 조합을 구한다.
  • list의 .index() 커맨드를 이용해서 수의 인덱스를 읽는다.

나의 코드

def two_sum(nums, target):
  for i in nums:
    for k in nums:
      if i+k== target:
        return [(nums.index(i)),(nums.index(k))]

problem

코드는 구현되나 임베디드 for문을 사용하면서 같은 숫자 끼리도 조합이 된다는 것을 인지했다.(같은 리스트 2개에서 1개씩 읽어오는 것이기 때문)
--> 해결방법
if 문을 사용하여 1번째 for 변수와 2번째 for 변수가 일치하면 continue 하는 코드를 작성해 해결하였다.

def two_sum(nums, target):
  for i in nums:
    for k in nums:
      if nums.index(k)==nums.index(i):
        continue
      elif i+k== target:
        return [(nums.index(i)),(nums.index(k))]

What I Learnt

효율적인 네비게이션

코딩하면서 느낀 것이 스크립트는 이동할 때 각자가 사용하는 길과 같다고 생각한다. 같은 출발지에서 같은 목적지에 도착한다 하여도 목적지 까지의 길과 소요 시간이 같을 수도 다를수도 있다.

하지만 그 길들 중 남들이 봣을때 찾기 쉬운길이 있으며 복잡한 길이 있을 수가 있다. 코딩은 결국 컴퓨터던 사람이던 누군가 읽어야하는 스크립트이기 때문에 가독성이 왜이토록 강조 되는지 코딩 카타를 하면서 많이 느꼈다. partner와 상의 하면서 나와 파트너가 각자 이해 하기 쉽도록 코딩을 구상하다 보니 좋은 결과가 나온 것 같다.

같은 결과 값을 출력하더라도 한번더 보고 더 쉬운 방법이 없을까 구상하는 능력도 중요한 것 같다.

profile
Venire, Videre, Vincere

0개의 댓글