Front-end(170)
-
[프로그래머스] [해시] 위장
[해시] 위장 문제 출처: 프로그래머스(programmers.co.kr/learn/courses/30/lessons/42578) 문제 설명 스파이들은 매일 다른 옷을 조합하여 입어 자신을 위장합니다. 예를 들어 스파이가 가진 옷이 아래와 같고 오늘 스파이가 동그란 안경, 긴 코트, 파란색 티셔츠를 입었다면 다음날은 청바지를 추가로 입거나 동그란 안경 대신 검정 선글라스를 착용하거나 해야 합니다. 종류 이름 얼굴 동그란 안경, 검정 선글라스 상의 파란색 티셔츠 하의 청바지 겉옷 긴 코트 스파이가 가진 의상들이 담긴 2차원 배열 clothes가 주어질 때 서로 다른 옷의 조합의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 clothes의 각 행은 [의상의 이름, 의상의 종류]로 이..
2021.03.11 -
[자료구조] 해시 - (2) 구현 - 충돌해결 - ② linear probing
🎈선형탐색법(linear probing) 새 원소 추가 시 인덱스가 이미 점유된 상태라면 인덱스+1 을 찾아보고, 인덱스+1도 점유됐다면 인덱스+2를 찾아보는 식으로 충돌을 회피하는 방법 🎀 앞서 기본적인 해시테이블을 구현할 때와 chaining으로 충돌을 해결했을 때에는 기본적으로 해시테이블의 constructor에서 테이블(배열)의 사이즈를 storageLimit으로 지정해놓았었는데, 선형탐색법 방법에서는 제한을 두지 않을 것이다. 🎁 다른 프로그래밍 언어에서는 배열의 크기를 미리 정하게 되어 있는데, 선형 탐색법에서 한 가지 신경쓰이는 부분이 배열 인덱스가 가능한 범위를 벗어났을 경우이다. 자바스크립트에서는 배열을 따로 크기를 지정해놓지 않아도 원소를 추가하면 자동으로 크기가 늘어나므로 전혀 고민할..
2021.03.11 -
[자료구조] 해시 - (2) 구현 - 충돌해결 -① Chaining
class ValuePair{ constructor(key,value){ this.key = key; this.value = value; } } class HashTable{ constructor(){ this.storageLimit = 10; this.table = new Array(this.storageLimit); } Hash(key){ let hash = 0; for(let i = 0; i < key.length; i++){ hash += key.charCodeAt(i); } return hash % this.storageLimit; } add(key,value){ const index = this.Hash(key); if(this.table[index] === undefined){ this.ta..
2021.03.10 -
[자료구조] 해시 - (2) 구현 - 일반 해시 테이블
class HashTable { constructor() { this.storageLimit = 10; // 해시테이블의 용량 한계 설정 this.table = new Array(this.storageLimit); // 정해진 용량 크기로 해시 테이블을 배열로 만듬 } // 키, 인덱스, 값 // key -> index (키를 가지고 인덱스로 변환해주는 해시 함수) Hash(key) { let hash = 0; for (let i = 0; i
2021.03.10 -
[자료구조] 해시 - (1) 개념
해시 - (1) 개념 해시란 무엇인가? 데이터를 관리하고 유지하는 자료구조 리소스 < 속도 (리소스를 포기하고 속도를 취한 자료구조) 키(key)는 해시 함수(Hash function)을 통해 해시(hash) = 배열의 인덱스 로 변경이 되고, 해시 = 배열의 인덱스는 값(value)와 매칭되어 저장소(storage)에 저장이 된다 Hash Table의 요소 키(key) : 고유한 값, 해시의 input 해시 함수(Hash function) : 키를 해시로 바꿔주는 역할 해시(Hash) : 해시 함수의 결과물, 저장소에서 값과 매칭되어 저장된다 = 배열의 인덱스 값(value) : 저장소에 최종 저장되는 값 해시 Big O Notation 각 조회의 평균 시간은 테이블에 저장된 요소 수와 관련이 없다. ..
2021.03.10 -
[자료구조] 딕셔너리(맵)
딕셔너리(맵) 딕셔너리(맵) : 데이터를 [키,값] 쌍으로 담아두는 자료구조 (키와 값의 쌍으로 이루어진 컬렉션) 키: 원소를 찾기 위한 식별자 집합의 Set 클래스와 마찬가지로 ES6에는 Map 클래스가 내장되어 있음 Map 객체와 객체의 차이 Map 객체는 객체와 유사하지만 다음과 같은 차이가 있음 구분 객체 Map 객체 키로 사용할 수 있는 값 문자열 또는 심벌 값 객체를 포함한 모든 값 이터러블 X O 요소 개수 확인 object.keys(obj).length map.size 1. Map 객체의 생성 - new Map() / new Map([[키1,값1], [키2,값2]]) Map 객체는 Map 생성자 함수로 생성한다. Map 생성자 함수에 인수를 전달하지 않으면 빈 Map 객체가 생성된다. co..
2021.03.08