Kata - Round 1

첫번째 문제

def two_sum(nums, target):
    # 아래 코드를 작성해주세요.
    result = []
    for idx, num in enumerate(nums):
        if target - num in nums:
           result.append(idx)
           result.append(num)
           return result

-> 랜덤으로 숫자를 추출해서 리스트로 리턴하는 방식으로 생각했음
--> enumerate 는 값을 튜플로 반환해 주었고, 결괏값들이 리스트로 나와야 했기에 에러 발생
--> num 에 어떠한 변화도 주지 않았기때문에 결괏값이 특정 인덱스에 고정됨(같은 숫자만 출력됨)

"풀이 1"
def two_sum(nums, target):
  for n in range(0,len(nums)):
    for o in range(n+1, len(nums)):
      if nums[n] + nums[o] == target :
        return [n, o]

-> 중복 for문을 사용하였는데, 주어진 리스트 value가 숫자라는 생각에 무조건 뽑아내서 연산을 해야한다고 생각했음
-> 여기서는 리스트의 길이(len)를 줄여나가면서 인덱스 값을 설정하고 다시 if문에 인덱스 값으로 추출한 숫자로 연산을 하였음
-> if의 합계가 target 이라는 True에 도달하면서 해당 값들의 인덱스 번호를 다시 리스트로 변환시킴

"풀이 2"
def two_sum(nums, target):
    for i in nums:
      a = target - i
      if a in nums :
        b = [nums.index(a),nums.index(i)]
        b.sort()
        return b

-> 한번의 for와 if를 사용함. 리스트에서 하나의 값을 추출해, target(합계)에서 빼 줌으로써 리스트에 들어있는 다른 숫자 하나(a)를 특정할 수 있게됨
-> 특정한 a를 if문으로 사용해 리스트안에 있는지 조건을 걸었고, True일때 for문의 변수였던 i와 a를 인덱스 넘버로 역변환한 뒤, sort()로 리턴 시킴

"풀이 3"
 for i in range(len(nums)):
     a = nums[i]
     for j in range(i+1,len(nums)):
       if a + nums[j] == target:
         return [i,j]

-> 풀이(1)과 1, 2행이 살짝 다르지만 전체적으로 같은 방식
-> 무작위 값 중 하나인 i를 if문에서 연산하기 위해 미리 a라는 변수로 리스트화 시킨 뒤, for문으로 j를 i와 같지 않도록 설정함
-> 영원히 같을 수 없는 i와 j를 조건문으로 연산시켜 True 를 만든 뒤, 리스트로 리턴시킴

Review

--> 결국 해답에는 도달하지 못했지만 다양한 해석들을 수집하여 복습을 거쳐 내 것으로 만들고자 한다.
--> 당장은 동기들한테 염치가 없지만, 그런거 따질 상황이 아니다. 묻어갈 수는 없다. 최대한 빨리 많이 흡수해서 단 하나의 문제라도 나만의 해석을 내놓을 수 있어야 하겠다.
--> 불안하고 좌절감이 들어도 지금은 그걸 느낄때가 아니다. 그러고 있는 것이 이미 사치인 타이밍이니까.

좋은 웹페이지 즐겨찾기