1주차

실리콘벨리는 코딩면접을 엄청 좋아한다. 전화면접(코딩)에서는 쉬운거, 화이트보드에서는 어려운걸 하나보다. 생각하는 방향을 보여줘야 하기 때문에 쉬지않고 궁시렁거려야 한다. 나이브한 솔루션을 피하자.(코드의 효율도 생각해야 한다.) 잘 모르겠다 싶을 때는 그냥 해쉬가 짱이다. 해쉬를 잘 쓰자.

실습 - 두 수의 합

# 민우코드
def twoSum(nums, target):
    f = 0
    l = len(nums)-1
    nums.sort()

    while f < l:
        first = nums[f] 
        last = nums[l]
        sum = first + last
        if(sum == target):
            return first , last
        elif(sum < target):
            f = f + 1
        else:
            l = l - 1
    return 0,0

# 엘리스코드
# 훨 짧고 훨갠찮은코드구나 해쉬도쓰고!
def twoSum(nums, target):
    numsHash = {num : 1 for num in nums}
    for i in range(len(nums)):
        firstNumber = nums[i]
        numberToFind = target - nums[i]
        if numberToFind in numsHash:
            return firstNumber, numberToFind

    return 0,0



def main():
    print(twoSum([2, 8, 19, 37, 4, 5], 12))

if __name__ == "__main__":
    main()

숙제 - 중복된 하나의 숫자 찾아내기

해쉬를 써봤다.

def findDuplicate(nums):
    numsHash = {}
    for num in nums:
        if(num not in numsHash):
            numsHash[num] = 1
        else:
          return num
    return None

def main():
    print(findDuplicate([1, 5, 2, 4, 5, 6, 3]))

if __name__ == "__main__":
    main()

results matching ""

    No results matching ""