본문 바로가기

반응형

JavaScript

알고리즘 3. DFS(깊이 우선 탐색) 트리의 순회, 점화식 구현 등 DFS(재귀 구조)에 특화된 문제인 경우 깊이 우선 탐색(DFS) 사용1. 깊이 우선 탐색(DFS)이란?① 그래프 혹은 트리에서 모든 노드를 한 번씩 탐색하기 위한 기본적인 방법이다.② [완전 탐색]을 수행하기 위해 사용할 수 있는 가장 간단한 방법 중 하나다③ 스택(stack) 자료구조를 사용한다.  2. 깊이 우선 탐색(DFS) 기본 동작 방식1) 시작 노드를 큐에 넣고 [방문 처리]한다.2) 스택에 마지막으로 들어 온 노드에 방문하지 않은 인접 노드가 있는지 확인한다. 있다면, 방문하지 않은 인접 노드를 스택에 삽입하고 [방문 처리]한다. 없다면, 현재 노드(스택에 마지막으로 들어 온 노드)를 스택에서 추출한다.3) 2번 과정을 더 이상 반복할 수 없을 때까지 반복한다.. 더보기
알고리즘 2. BFS(너비 우선 탐색) 시작 정점에서 인접한 정점을 먼저 탐색하는 너비 우선 탐색을 통해 가중치가 없는 그래프에서 두 정점 사이의 최단 경로를 구하기1. 너비 우선 탐색(BFS)이란?① 그래프 혹은 트리에서 모든 노드를 한 번씩 탐색하기 위한 기본적인 방법이다.② [완전 탐색]을 수행하기 위해 사용할 수 있는 방법 중 하나다.③ (모든 간선의 길이가 동일할 때) 최단 거리를 탐색하기 위한 목적으로 사용할 수 있다.④ 큐(queue) 자료구조를 사용한다.👉 기본적으로 DFS는 스택, BFS는 큐를 사용한다.  2. 너비 우선 탐색(BFS) 기본 동작 방식1) 시작 노드를 큐에 넣고 [방문 처리]한다.2) 큐에서 아무 노드가 없을 때까지:   a. 큐 가장 앞 노드를 꺼낸다.  b. 꺼낸 노드에 인접한 노드들을 모두 보면서:  .. 더보기
[JavaScript] 비동기 비동기비동기 프로그래밍은 코드가 다른 코드와 동시에 실행될 수 있도록 하여, 시간이 오래 걸리는 작업(예: 네트워크 요청, 파일 읽기/쓰기 등)을 비동기적으로 처리할 수 있게 합니다. 콜백 함수 (a.k.a 콜백 지옥)순서를 보장하기 위해서 콜백 함수를 사용합니다.function task1(callback) { console.log("task1"); callback();}function task2(callback) { setTimeout(() => { console.log("task2"); callback(); }, 1000);}function task3(callback) { console.log("task3"); callback();}function task4(callback) {.. 더보기
[JavaScript] 이벤트 리스너 이벤트 리스너 클릭 const btnEl = document.querySelector("button");console.log(btnEl); // nullbtnEl.addEventListener("click", function () { alert("졸러요😴 선생님");});이벤트 타겟을 찾지 못하여 클릭되지 않습니다.defer 속성을 붙여줘서 html 파싱 후 인터랙션이 되도록 하여 이벤트 타겟을 제대로 찾았는지 확인합니다. `addEventListener` 메서드 사용예제1) 컬러피커* { box-sizing: border-box;}html { display: table; width: 100%; height: 100%;}body { text-align: center; disp.. 더보기
[JavaScript] 클래스 클래스ES6(ECMAScript 2015)부터 도입된 `class` 키워드를 사용하여 클래스를 정의할 수 있습니다.클래스를 활용하여 객체 지향 프로그래밍의 개념을 자바스크립트에서 구현할 수 있습니다. 클래스 상속class Rectangle extends Shape { constructor(color, width, height) { super(color); this.width = width; this.height = height; } getArea() { return this.width * this.height; }}const rect1 = new Rectangle("blue", 10, 20);console.log(rect1.getColor()); // blue`extends.. 더보기
알고리즘 1. 완전 탐색 반복문 or 재귀 함수로 모든 경우를 처리하기1. 완전 탐색① 완전 탐색이란 가능한 모든 경우를 탐색하면서 정답을 찾는 방법이다.② 두 가지 방법으로 구현    a. 반복문을 통해 가능한 모든 방법을 단순히 찾는 방법    b. 재귀(자기 호출) 함수를 이용하여 현재 상태에서 가능한 후보군으로 가지를 치며 탐색하는 방법4. 온라인 저지 문제 풀이2024.01.30 - [JS 코딩테스트/문제풀이] - [자바스크립트] 15649 N과 M (1)2024.01.30 - [JS 코딩테스트/문제풀이] - [자바스크립트] 15650 N과 M (2)2024.01.30 - [JS 코딩테스트/문제풀이] - [자바스크립트] 2231 분해합2024.01.31 - [JS 코딩테스트/문제풀이] - [자바스크립트] 1436 영화.. 더보기
자료구조 4. 큐 데이터를 추가한 순서대로 처리하기1. 큐(Queue)① 큐(queue)는 먼저 삽입된 데이터가 먼저 추출되는 자료구조(data structure)다. ② 큐는 주로 데이터를 추가, 삭제하는 상황에서 먼저 추가된 데이터를 먼저 삭제할 때 사용한다.  2. 연결 리스트로 큐 구현하기 ① 큐를 연결 리스트로 구현하면, 삽입과 삭제에 있어서 $O(1)$을 보장할 수 있다. ② 연결 리스트로 구현할 때는 머리(head)와 꼬리(tail) 두 개의 포인터를 가진다. ③ 머리(head): 남아있는 원소 중 가장 먼저 들어 온 데이터를 가리키는 포인터 ④ 꼬리(tail): 남아있는 원소 중 가장 마지막에 들어 온 데이터를 가리키는 포인터  3. JavaScript 큐(Queue) 배열로 구현하기class Queue {.. 더보기
자료구조 3. 객체 문자열과 숫자를 한쌍으로 처리하기 1. 객체(Object) ① 데이터를 {키(key): 값(value)} 형식으로 저장하는 자료 구조 ② 객체는 주로 문자열과 숫자를 한 쌍으로 처리할 때 사용한다. 2. 온라인 저지 문제 풀이 2024.01.23 - [JS 코딩테스트/문제풀이] - [자바스크립트] 5089 Travelling Salesman 2024.01.23 - [JS 코딩테스트/문제풀이] - [자바스크립트] 10816 숫자 카드 2 2024.01.24 - [JS 코딩테스트/문제풀이] - [자바스크립트] 14425 문자열 집합 2024.01.24 - [JS 코딩테스트/문제풀이] - [자바스크립트] 1764 듣보잡 2024.01.24 - [JS 코딩테스트/문제풀이] - [자바스크립트] 15098 No D.. 더보기

반응형