
프로그래머스 1단계 해시 문제를 해시 테이블로 안 풀었더니 결과는 ..

테스트 케이스는 전부 통과했지만 시간초과 ..ㅋ..
그래서 해시를 공부하고 다시 풀어보기로 했다.
Hash Tables은 Key Value System을 이용해서 자료를 정리한다.
배열에서 원하는 값을 찾으려면 배열을 순차적으로 돌면서 체크해야 하는데 이 과정에서 시간이 많이 소요된다. 따라서 이 방법의 시간복잡도는 O(N)이다. (선형 시간)
체크해야할 항목이 많을 수록 시간도 따라 늘어난다.
이런 시간을 줄이려면 Hash Tables을 이용하자 !! Hash Tables의 시간복잡도는 O(1)이다. (상수 시간) 즉, 체크해야 할 항목이 많아져도 시간은 늘어나지 않는다.-> 소요되는 건 딱 한 단계. 뭐 아이템을 삭제하든~ 아이템을 추가하든~
예시 코드 (Arry)
let participant = [
{ name: "민지", age: 21 }
{ name: "안나", age: 20 }
{ name: "철수", age: 52 }
{ name: "영희", age: 43 }
{ name: "지영", age: 31 }
];
예시 코드(Hash Tables)
let participant = [
민지: 21,
안나: 20,
철수: 52,
영희: 43,
지영: 31,
];```
이렇게 정리할 수 있다. 따라서 지영이의 나이를 알고 싶다면 바로 Key는 지영, value는 31로 접근이 가능하다.
# Hash Tables의 원리
# 배열을 객체로 바꾸기
Hash Tables을 이용하여 더 빠른 배열을 만들어보자.
지금 내가 풀고 있는 문제로 살펴보자.
자바스크립트에서는 Hash Tables이 객체이다.
내가 풀고 있는 문제에서 배열이 매개변수로 주어지기 때문에 매개변수로 주어진 배열을 객체형태로 변환하여 문제풀이에 사용할 것이다.
> Object.assign(target, source)
- target: 대상 객체/ Source: 하나 이상의 출처 객체
- target(첫번째 인수)객체에다가 source(두번째 인수)를 병합합니다.
- 즉, target에 source의 소스를 복사하여 병합이 되어 target을 반환합니다.
아악아악아악 객체공부 더 하고 문제 다시 풀어야겠다.