알고리즘
nums = [1,2,-1,-2, 4, 0, -4]
이라는 배열이 있을때 2개의 수를 뽑아서 0이되는 조합을 만드는 것과 3개를 뽑아서 0이되는 조합을 만드는 방법을 찾아야 합니다. 하지만 3개의 수를 뽑을때도 O(N^2)
의 시간복잡도를 가져야 합니다.
2개의 수를 가지고 하는것은 굉장히 쉬웠고 3개의 수를 가지고 O(N^2)
의 시간복잡도를 가지게 하는 방법도 굉장히 쉽긴했는데 면접장이다 보니 머리가 잘 안돌아가서 제대로 답변을 못한게 아쉽습니다.
nums = [1,2,-1,-2, 4, 0, -4]
ans = []
for i in range(len(nums)-1):
nums_dict = {}
for j in range(i+1, len(nums)):
if -nums[j] in nums_dict:
x, y = nums_dict[-nums[j]]
ans.append([x, y, j])
nums_dict[nums[i]+nums[j]] = [i, j]
print(ans)
js 에서 object에서 프로퍼티의 존재 유무 확인할때 in
을 사용하는 것과 hasOwn
을 사용하는 것의 차이가 무엇일까?
in
은 접근 할 수 있는 프로퍼티가 있으면 true
를 리턴하고
hasOwn
은 상속된 프로퍼티를 확인하고자 할때는 false
를 리턴한다.
https 란?
type과 interface의 차이는?
일단 확장하는 방법이 다르다.
interface는 extends로
type은 &로
interface는 객체만 이용가능하다.
사실 객체가 아닐때 type선언하는 것은 그냥 변수 옆에 : 타입
으로 붙여 주면 된다.
computed Value는 type에만 사용가능하다.
interface는 선언적 확장이 가능하다. 똑같은 이름으로 interface를 정의 해도 에러가 나지 않는다.
type은 그게 안된다.
사실 2개를 나눠쓰는 것의 큰 의미는 없고 하나로 통일해서 쓰는 것이 좋으며 interface가 성능이 좋다고 한다.