μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
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 |
- useEffect
- useRef
- REACT
- Gatsby
- μ½λ©ν μ€νΈ
- position
- Flex
- fetch API
- CSS
- float
- Props
- νλ‘ νΈμλ
- λ°λΈμ½μ€
- λ°λΈμ½μ€3κΈ°
- μλ°μ€ν¬λ¦½νΈ
- νλ‘κ·Έλλ¨Έμ€
- λΈλ‘κ·Έ
- history api
- μκ³ λ¦¬μ¦
- Today
- Total
Daehyunii's Dev-blog
20 κ·Έλν λ³Έλ¬Έ
20.1 κ·Έλν
κ·Έλνλ μ ννκ³ λ³ν μ μλ κΌμ§μ (λ Έλ)μ μ§ν©μΌλ‘ ꡬμ±λ λ°μ΄ν° ꡬ쑰μ΄λ€. μ΄ κΌμ§μ λ€μ μ§ν©μ μμκ° μλ κ²½μ°μλ 무방ν₯ κ·Έλν, μμκ° μλ κ²½μ°μλ μ λ°©ν₯ κ·ΈλνλΌκ³ νλ€. μ¦, κ·Έλνλ λ Έλμ λ Έλλ€μ μ°κ²°μ λͺ¨μ κ²μ΄λ€. κ·Έλ¬λ―λ‘ νΈλ¦¬λ κ·Έλνμ μΌμ’ μ΄λ€. λ€λ§ νΈλ¦¬λ λͺ κ°μ§ κ·μΉμ΄ μΆκ°λμ΄ λΆλͺ¨μ μμλ Έλλ‘ κ΅¬μ±λκ³ μμμ μΈ λ£¨νΈκ° μ‘΄μ¬νλ κ²μ΄λ€. νμ§λ§ κ·Έλνμλ λΆλͺ¨ λ ΈλλΌλ κ²μ΄ μκ³ , μμμ λ μλ€. λ€ λμΌν λ ΈλμΌ λΏμ΄λ€. λν κ·Έλνλ νΈλ¦¬λ μ°κ²° 리μ€νΈ κ°μ μμ€μ ν¨ν΄μ΄ μλ€. μμ λ‘μ΄ νμμ λ Έλκ° μκ³ κ·Έ μ¬μ΄μ μ°κ²°λ§ μμ λΏμ΄λ€. λν νΈλ¦¬λ ν λ Έλμμ λ€λ₯Έ λ Έλλ‘ κ°λ κ²½λ‘κ° λ± ν κ°μ§λ§ μ‘΄μ¬ν΄μΌ νμ§λ§ κ·Έλνλ μ κ°μ κ²½λ‘κ° μ‘΄μ¬ν μ μλ€.
β»μ©μ΄ μ 리
1) μ μ (Vertex) : λ Έλλ₯Ό μλ―Έν¨
2) κ°μ (Edge) : λ Έλμ λ Έλ μ¬μ΄μ μ°κ²°μ μλ―Έν¨
3) κ°μ€(Weighted) : κ°μ μ κ°μ λΆμ¬ν κ²(μ°κ²° κ·Έ μ체μ μ λ³΄κ° λ΄κ²¨μλ κ²μ΄λ€.)
4) λΉκ°μ€(Unweighted) : κ°μ μ κ°μ λΆμ¬νμ§ μμ κ²
5) λ°©ν₯(Directed) : κ°μ μ΄ λ¨λ°©ν₯μΌλ‘ μ°κ²°λμ΄ μλ κ²
6) 무방ν₯(Undirected) : κ°μ μ μ‘΄μ¬νλ λ°©ν₯μ±μ΄ μμ
20.2 κ·Έλν μ λ ¬ : μΈμ νλ ¬ vs μΈμ 리μ€νΈ
κ·Έλνμ μ 보λ₯Ό μ μ₯νκ³ μ°κ²°νλ λ°©λ²μλ μ¬λ¬κ°μ§κ° μλλ° λνμ μΈ λ°©λ²μΌλ‘ μΈμ νλ ¬(Adjacency Matrix)μ μΈμ 리μ€νΈ(Adjacency Lists)κ° μλ€.
1) μΈμ νλ ¬(Adjacency Matrix)
νλ ¬μ΄λ μ΄μ°¨μ κ΅¬μ‘°λ‘ νμμ μλμ§λ§ λ³΄ν΅ μ€μ²© νλ ¬λ‘ νννλ€. κΈ°λ³Έμ μΌλ‘ νκ³Ό μ΄μ λ§μΆ°μ μ 보λ₯Ό μ μ₯νλ λ°©λ²μ΄λ€.
μ₯μ : νΉμ κ°μ μ νμΈνλ κ²½μ°μ λΉ λ₯΄λ€.
λ¨μ : μΈμ 리μ€νΈμ λΉν΄ 곡κ°μ λ λ§μ΄ μ°¨μ§νκ³ , λͺ¨λ κ°μ μ μνν΄μΌ νλ κ²½μ° λ리λ€.(λ°μ΄ν°κ° λκ² νΌμ Έμλ κ²½μ° μ’μ§ μλ€.)
2) μΈμ 리μ€νΈ(Adjacency Lists)
μ μ μ΄ μ«μλ‘ μ΄λ€μ§ κ²½μ°μλ λ°°μ΄μ ν΅ν΄μ κ°μ λ€μ μ μ₯ν μ μκ³ , νΉμ λ¬Έμμ΄μ΄λ μ«μκ° μλ κ²½μ° ν΄μν μ΄λΈ μλ£κ΅¬μ‘°λ₯Ό ν΅ν΄ κ°μ λ€μ μ μ₯ν μ μλ€.(ν€μ κ°μ μμΌλ‘ μ μ₯νλ λ°μ΄ν° ꡬ쑰)
μ₯μ : μΈμ νλ ¬μ λΉν΄ 곡κ°μ μ κ² μ°¨μ§νκ³ λͺ¨λ κ°μ μ μννλ κ²½μ° λΉ λ₯΄λ€.
λ¨μ : νΉμ κ°μ μ΄ μ‘΄μ¬νλμ§ νμΈνλ κ²μ λ리λ€.
//λ
Έλκ° μ«μλ‘ μ΄λ€μ§ κ²½μ° μΈλ±μ€λ₯Ό μ μ μΌλ‘ νννκ³ ν΄λΉ μ μ μ κ°μ λ€μ λ°°μ΄λ‘ νμ
[[1,5],[0,2],[1,3],[2,4],[3,5],[4,0]]
//λ
Έλκ° μ«μλ‘ μ΄λ€μ§μ§ μμ κ²½μ°
{
A: ["B", "F"],
B: ["A", "C"],
C: ["B", "D"],
D: ["C", "E"],
E: ["D", "F"],
F: ["E", "A"]
}
20.3 μ μ μΆκ°
μΈμλ₯Ό λ°μμ μΈμ 리μ€νΈμ νλ‘νΌν°λ‘ μΆκ°νλ€. μ μ μ μ΄λ¦μ μΈμ 리μ€νΈμ ν€λ‘ λ§λ€κ³ κ°μ κ°μ λ€μ λ£μ΄μ£Όλ©΄ λλ€.(κ°μ μ΄κΈ° μ€μ μ λΉ λ°°μ΄λ‘ λ§λ€μ΄μ£Όλ©΄ λλ€.)
// μΈμ 리μ€νΈλ₯Ό νμ©
class Graph{
constructor(){
this.adjacencyList = {};
}
addVertex(vertex){
if(!this.adjacencyList[vertex]) this.adjacencyList[vertex] = [];
}
}
20.4 κ°μ μΆκ°
κ°μ μ μΆκ°ν λλ λ κ°μ μ μ μ λͺ¨λ λͺ μνμ¬μΌ νλ€.(무방ν₯ κ·Έλνμ κ²½μ°)
class Graph{
constructor(){
this.adjacencyList = {};
}
addVertex(vertex){
if(!this.adjacencyList[vertex]) this.adjacencyList[vertex] = [];
}
addEdge(v1,v2){
this.adjacencyList[v1].push(v2);
this.adjacencyList[v2].push(v1);
}
}
20.5 κ°μ μ κ±°
μ μ μ μ κ±°νκΈ° μν΄μλ μ μ λ κ°λ₯Ό μΈμλ‘ λ°μμΌ νκ³ , νλμ μ μ μ΄ κ°λ¦¬ν€λ λ°°μ΄μ λ€λ₯Έ νλμ μ μ μ μ κ±°ν λ°°μ΄μ μ¬ν λΉ ν΄μ€λ€. κ·Έλ¦¬κ³ λλ¨Έμ§ μ μ μλ λμΌν λ°©λ²μΌλ‘ μ¬ν λΉ ν΄μ€λ€.
class Graph{
constructor(){
this.adjacencyList = {};
}
addVertex(vertex){
if(!this.adjacencyList[vertex]) this.adjacencyList[vertex] = [];
}
addEdge(v1,v2){
this.adjacencyList[v1].push(v2);
this.adjacencyList[v2].push(v1);
}
removeEdge(vertex1,vertex2){
this.adjacencyList[vertex1] = this.adjacencyList[vertex1].filter(
v => v !== vertex2
);
this.adjacencyList[vertex2] = this.adjacencyList[vertex2].filter(
v => v !== vertex1
);
}
}
//filter() μ½λ°± ν¨μμ 쑰건μ λ§λ μμλ€λ§ μ·¨νμ¬ μλ‘μ΄ λ°°μ΄μ λ§λ€μ΄ λ°νν΄μ€
20.6 μ μ μ κ±°
μ μ μ μ κ±°νκΈ° μν΄μλ λ¨μν μ μ λ§μ μ κ±°ν΄μλ μλκ³ ν΄λΉ μ μ κ³Ό μ°κ²°λμ΄ μλ λ€λ₯Έ μ μ λ€μ λ°°μ΄ λ΄μμλ μ§μμ£Όμ΄μΌ νλ€. κ·Έλ¬λ―λ‘ λ£¨νλ₯Ό λλ©° λ¨Όμ κ°μ μ κ±° ν¨μλ₯Ό μ΄μ©νμ¬ μμ νλ €λ μ μ μ΄ κ°μ§κ³ μλ κ°μ λ€μ λ¨Όμ λ€ μ κ±°ν΄μ£Όκ³ μ μ μ λ§μ§λ§μ μ κ±°ν΄μΌ νλ€.
class Graph{
constructor(){
this.adjacencyList = {};
}
addVertex(vertex){
if(!this.adjacencyList[vertex]) this.adjacencyList[vertex] = [];
}
addEdge(v1,v2){
this.adjacencyList[v1].push(v2);
this.adjacencyList[v2].push(v1);
}
removeEdge(vertex1,vertex2){
this.adjacencyList[vertex1] = this.adjacencyList[vertex1].filter(
v => v !== vertex2
);
this.adjacencyList[vertex2] = this.adjacencyList[vertex2].filter(
v => v !== vertex1
); // νν°λ©μλλ μλ³Έ λ°°μ΄ λ³κ²½ μλ¨ λ³΅μ¬ν΄μ μλ‘κ² λ°°μ΄μ λ§λ€μ΄λ
}
removeVertex(vertex){
while(this.adjacencyList[vertex].length){
const adjacentVertex = this.adjacencyList[vertex].pop();
console.log(adjacentVertex);
console.log(this.adjacencyList[vertex]);
//μλ³Έ λ°°μ΄ λ³κ²½λ¨, popλ©μλλ λ°°μ΄μ 맨 λ€ μμλ₯Ό μ§μ°κ³ μ§μ΄ μμλ₯Ό λ°νν¨
this.removeEdge(vertex, adjacentVertex);
}
delete this.adjacencyList[vertex]
}
}
'π Language & CS knowledge > Algorithm & Data structure' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
23 λμ νλ‘κ·Έλλ° (0) | 2022.08.21 |
---|---|
21 κ·Έλν μν (0) | 2022.08.19 |
19 ν΄μ ν μ΄λΈ (0) | 2022.08.16 |
18 μ΄μ§ ν (0) | 2022.08.16 |
17 νΈλ¦¬ μν (0) | 2022.08.16 |