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()