일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 타입스크립트
- 코딩테스트
- 스택
- 이진탐색
- 자바스크립트
- Machine Learning
- 알고리즘
- GraphQL
- 포인터
- 브라우저
- RT scheduling
- 해시테이블
- 프론트엔드
- C
- 큐
- pytorch
- 프로그래머스
- APOLLO
- 릿코드
- 자료구조
- 배열
- 연결리스트
- 컨테이너
- cors
- 연결 리스트
- 프로세스
- 웹팩
- alexnet
- vue3
- RxJS
- Today
- Total
목록자료구조, 알고리즘 (48)
프린세스 다이어리

> 문제 바로가기 1. 접근 방법 (1) 주어지는 clothes 배열을 for...of 문으로 돌면서 map에 넣어준다. for (let clothing of clothes) { if (map.get(clothing[1])) { map.set(clothing[1], [...map.get(clothing[1]), clothing[0]]) } else { map.set(clothing[1], [clothing[0]]); } } (2) 옷을 입는 경우의 수를 계산한다. 아무것도 안 입는 경우는(-///-) 없기 때문에 마지막에 1을 뺀다. for (let [key, value] of map) { result = result * (value.length + 1) } return result - 1; 2. 전체 ..

> 문제 바로가기 1. 접근 방법 (0) 동명이인이 있을 수 있다는 점에서 해시 테이블로 푸는 방법을 생각했다. (1) participant를 map에 저장하면서, key는 참가자 이름, value는 동명이인이 이미 있으면 +1, 없으면 그냥 1로 넣어준다. for (let person of participant){ if(!map.get(person)){ map.set(person, 1); }else{ map.set(person, map.get(person)+1); } } (2) completion을 돌면서 한 명씩 map에 이름에 해당하는 값이 1이면 엘리먼트를 삭제해 주고, 2 이상이면 1을 뺀다. for(let person of completion){ if(map.get(person) >= 2){ ..

> 자바스크립트 해시 테이블 구현하는 방법에서 이어진다. class HashTable { table = new Array(3); /// ... } 만약 위 같이 테이블의 길이가 너무 짧은 경우에는 해시 충돌이 일어난다. myTable.setItem('firstName', 'eunjin'); myTable.setItem('lastName', 'lee'); myTable.setItem('age', 29); myTable.setItem('birth', '2000-00-00'); console.log(myTable.getItem('firstName')); // 2000-00-00 console.log(myTable.getItem('lastName')); // 2000-00-00 당장 key-value 4개만 집..

const person = {}; person['firstName'] = 'eunjin'; person['lastName'] = 'lee'; 위 코드는 string 자료형의 key에 해당하는 공간에 string 자료형의 value를 집어넣은 것이다. 이렇게 키와 값의 형태로 데이터를 저장하는 자료 구조를 자바스크립트의 object나 map, 파이썬의 dictionary 등으로 구현할 수 있다. 이들은 모두 해시 테이블의 일종이다. 자료구조를 공부할 때 흔히 이야기하는 해시 테이블이라 함은 특정 오퍼레이션에 대해 시간복잡도를 해결해야 할 때, 원하는 값을 key로 사용하는 자료구조다. 해시 테이블이 무엇인지 공부하고 자바스크립트로 해시 테이블을 짜는 방법을 정리해 보았다. 1. Hash Table 생성하기..

> 문제 바로가기 코딩테스트 연습 - 여행경로 [["ICN", "SFO"], ["ICN", "ATL"], ["SFO", "ATL"], ["ATL", "ICN"], ["ATL","SFO"]] ["ICN", "ATL", "ICN", "SFO", "ATL", "SFO"] programmers.co.kr 1. 접근 방법 - [["ICN", "JFK"], ["HND", "IAD"], ["JFK", "HND"]] 이런 그래프고 각 노드의 [0]이 출발, [1]이 도착임 - 문제에서 항상 ICN 공항에서 출발한다고 했으므로 출발지는 'ICN' - 주어진 tickets(array), 시작노드 'ICN'(string), 탐색중인 경로 path(array), 결과 담을 routes(array) (1) 만약 tickets가..
문제 nums는 숫자로 이루어진 배열입니다. 가장 자주 등장한 숫자를 k 개수만큼 return해주세요. 예시 nums = [1,1,1,2,2,3], k = 2 return [1,2] nums = [1], k = 1 return [1] 접근방향 문제에 최대 nums의 길이나 k의 범위가 제시되어 있지 않아 key를 이용해 상수 시간 복잡도로 접근할 수 있도록 object을 활용하여 풀었다. 마지막에 Object.keys를 활용하여 정렬을 할 때, string 자료형으로 배열에 들어가기 때문에 map함수로 number 형으로 바꿔주는 것에 유의한다. 해답 function topK(nums, k) { let obj = {}; for (let i = 0; i < nums.length; i++) { if (num..

> 문제 바로가기 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net 백준 맞왜틀 극한이다. 4시간 붙들고 있었음 1. 접근 방향 (1) 집이 표시된 그래프와, 내가 확인했음을 기록한 그래프가 필요하다. 초기화시켜준다. let fs = require('fs'); let input = fs.readFileSync('/dev/stdin').toString().split('\n'); const n = +input.shift(); // 집이 있는지 기록된 그래프 input = input.map((arr) => arr.tr..

> 문제 바로가기 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net 1. 접근 방법 (1) 입력받은 n, m, graph 잘라서 준비해두기 let fs = require('fs'); let input = fs.readFileSync('/dev/stdin').toString().split('\n'); const [n, m] = input.shift().split(" "); let graph = input.map(arr => arr.split("").map(x => +x)); (2) n, m, graph 인자로 받는 BFS 함수 만들기 (3) 현..