μ€νΈλ¦Ό μ°μ°μ κ²°ν©νκ³ λ°μ΄ν° μ²λ¦¬ μ±λ₯μ ν₯μμν€λ κ°λ ₯ν μ΅μ ν κΈ°λ²μΈ μλ°μ€ν¬λ¦½νΈ μ΄ν°λ μ΄ν° ν¬νΌ νμ΄νλΌμΈ ν¨μ μ λν΄ μμ보μΈμ.
μλ°μ€ν¬λ¦½νΈ μ΄ν°λ μ΄ν° ν¬νΌ νμ΄νλΌμΈ ν¨μ : μ€νΈλ¦Ό μ°μ° κ²°ν©
νλ μλ°μ€ν¬λ¦½νΈ κ°λ°μμ λ°μ΄ν° 컬λ μ
μ λ€λ£¨λ κ²μ νν μμ
μ
λλ€. APIμμ λ°μ΄ν°λ₯Ό μ²λ¦¬νλ , μ¬μ©μ μ
λ ₯μ μ‘°μνλ , 볡μ‘ν κ³μ°μ μννλ , ν¨μ¨μ μΈ λ°μ΄ν° μ²λ¦¬λ μ ν리μΌμ΄μ
μ±λ₯μ λ§€μ° μ€μν©λλ€. μλ°μ€ν¬λ¦½νΈμ μ΄ν°λ μ΄ν° ν¬νΌ(μ: map
, filter
, reduce
)λ λ°μ΄ν° μ€νΈλ¦Όμ λ€λ£¨λ κ°λ ₯νκ³ ννλ ₯ μλ λ°©λ²μ μ 곡ν©λλ€. κ·Έλ¬λ μ΄λ¬ν ν¬νΌλ₯Ό 무μ¬μ½ μ¬μ©νλ©΄ μ±λ₯ λ³λͺ© νμμ΄ λ°μν μ μμ΅λλ€. λ°λ‘ μ΄ μ§μ μμ νμ΄νλΌμΈ ν¨μ μ΄ λ±μ₯νμ¬ μ΄λ¬ν μ°μ°μ μ΅μ ννκ³ ν¨μ¨μ±μ λμ
λλ€.
μ΄ν°λ μ΄ν° ν¬νΌμ μ μ¬μ μ±λ₯ λ¬Έμ μ΄ν΄νκΈ°
μλ°μ€ν¬λ¦½νΈλ ν¨μν λ° μ μΈμ λ°©μμΌλ‘ λ°°μ΄ λ° κΈ°ν λ°λ³΅ κ°λ₯ν κ°μ²΄λ₯Ό μ‘°μν μ μλ νλΆν μ΄ν°λ μ΄ν° ν¬νΌ μΈνΈλ₯Ό μ 곡ν©λλ€. μ΄λ¬ν ν¬νΌμλ λ€μμ΄ ν¬ν¨λ©λλ€:
map()
: 컬λ μ μ κ° μμλ₯Ό λ³νν©λλ€.filter()
: 쑰건μ λ°λΌ 컬λ μ μμ μμλ₯Ό μ νν©λλ€.reduce()
: 컬λ μ μ μμλ€μ λ¨μΌ κ°μΌλ‘ λμ ν©λλ€.forEach()
: κ° λ°°μ΄ μμμ λν΄ μ 곡λ ν¨μλ₯Ό ν λ²μ© μ€νν©λλ€.some()
: λ°°μ΄μ μ΅μ νλ μ΄μμ μμκ° μ 곡λ ν¨μλ‘ κ΅¬νλ ν μ€νΈλ₯Ό ν΅κ³Όνλμ§ νμΈν©λλ€.every()
: λ°°μ΄μ λͺ¨λ μμκ° μ 곡λ ν¨μλ‘ κ΅¬νλ ν μ€νΈλ₯Ό ν΅κ³Όνλμ§ νμΈν©λλ€.find()
: μ 곡λ ν μ€νΈ ν¨μλ₯Ό λ§μ‘±νλ λ°°μ΄μ 첫 λ²μ§Έ μμ κ°μ λ°νν©λλ€. κ·Έλ μ§ μμΌλ©΄ undefinedκ° λ°νλ©λλ€.findIndex()
: μ 곡λ ν μ€νΈ ν¨μλ₯Ό λ§μ‘±νλ λ°°μ΄μ 첫 λ²μ§Έ μμ μΈλ±μ€λ₯Ό λ°νν©λλ€. κ·Έλ μ§ μμΌλ©΄ -1μ΄ λ°νλ©λλ€.
μ΄λ¬ν ν¬νΌλ€μ κ°λ ₯νκ³ νΈλ¦¬νμ§λ§, μ΄λ€μ ν¨κ» μ°κ²°νλ©΄ μ€κ° λ°°μ΄μ΄ μμ±λ μ μμΌλ©°, νΉν λμ©λ λ°μ΄ν°μ μ λ€λ£° λ λΉν¨μ¨μ μΌ μ μμ΅λλ€. λ€μ μμ λ₯Ό μ΄ν΄λ³΄κ² μ΅λλ€:
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const result = numbers
.filter(num => num % 2 === 0) // Filter even numbers
.map(num => num * 2); // Double the even numbers
console.log(result); // Output: [4, 8, 12, 16, 20]
μ΄ μμ μμ filter()
μ°μ°μ μ§μλ§ ν¬ν¨νλ μ€κ° λ°°μ΄μ μμ±ν©λλ€. κ·Έλ° λ€μ map()
μ°μ°μ΄ μ΄ μλ‘μ΄ λ°°μ΄μ λ°λ³΅νλ©΄μ κ° μμλ₯Ό λ λ°°λ‘ λ§λλλ€. μ΄λ¬ν μ€κ° λ°°μ΄ μμ±μ νμ΄νλΌμΈ ν¨μ μ ν΅ν΄ νΌν μ μλ μ±λ₯ μ€λ²ν€λμ
λλ€.
νμ΄νλΌμΈ ν¨μ μ΄λ 무μμΈκ°?
νμ΄νλΌμΈ ν¨μ μ μ¬λ¬ μ€νΈλ¦Ό μ°μ°μ λ¨μΌ 루νλ‘ κ²°ν©νλ μ΅μ ν κΈ°λ²μ λλ€. κ° μ°μ° μ¬μ΄μ μ€κ° λ°°μ΄μ μμ±νλ λμ , νμ΄νλΌμΈ ν¨μ μ μ€νΈλ¦Όμ κ° μμμ λν΄ λͺ¨λ μ°μ°μ μνν ν λ€μ μμλ‘ λμ΄κ°λλ€. μ΄λ λ©λͺ¨λ¦¬ ν λΉμ ν¬κ² μ€μ΄κ³ μ±λ₯μ ν₯μμν΅λλ€.
μ΄λ₯Ό 쑰립 λΌμΈμ λΉμ ν μ μμ΅λλ€. ν μμ μκ° μμ μ μμ μ μλ£νκ³ λΆλΆμ μΌλ‘ μμ±λ μ νμ λ€μ μμ μμκ² λκΈ°λ λμ , 첫 λ²μ§Έ μμ μκ° μμ μ μμ μ μννκ³ *μ¦μ* κ°μ μμ μ€ν μ΄μ μ μλ λ€μ μμ μμκ² νλͺ©μ μ λ¬νλ©°, μ΄ λͺ¨λ κ²μ΄ λμΌν μμ λ΄μμ μ΄λ£¨μ΄μ§λλ€.
νμ΄νλΌμΈ ν¨μ μ μ°μ° κ²°κ³Όκ° μ€μ λ‘ νμν λλ§ μνλλ μ§μ° νκ°(lazy evaluation) κ°λ κ³Ό λ°μ νκ² κ΄λ ¨λμ΄ μμ΅λλ€. μ΄λ₯Ό ν΅ν΄ νμν μμλ§ μ²λ¦¬νλ―λ‘ λμ©λ λ°μ΄ν°μ μ ν¨μ¨μ μΌλ‘ μ²λ¦¬ν μ μμ΅λλ€.
μλ°μ€ν¬λ¦½νΈμμ νμ΄νλΌμΈ ν¨μ μ λ¬μ±νλ λ°©λ²
μλ°μ€ν¬λ¦½νΈμ λ΄μ₯ μ΄ν°λ μ΄ν° ν¬νΌκ° μλμΌλ‘ νμ΄νλΌμΈ ν¨μ μ μννμ§λ μμ§λ§, μ΄ μ΅μ νλ₯Ό λ¬μ±νκΈ° μν΄ μ¬λ¬ κΈ°μ μ μ¬μ©ν μ μμ΅λλ€:
1. νΈλμ€λμ
νΈλμ€λμλ μ¬μ¬μ© κ°λ₯νκ³ ν¨μ¨μ μΈ λ°©μμΌλ‘ λ³νμ ꡬμ±ν μ μλ κ°λ ₯ν ν¨μν νλ‘κ·Έλλ° κΈ°λ²μ λλ€. νΈλμ€λμλ λ³Έμ§μ μΌλ‘ 리λμλ₯Ό μ λ ₯μΌλ‘ λ°μ μνλ λ³νμ μννλ μλ‘μ΄ λ¦¬λμλ₯Ό λ°ννλ ν¨μμ λλ€. μ¬λ¬ μ°μ°μ λ°μ΄ν°μ λν λ¨μΌ ν¨μ€λ‘ κ²°ν©ν μ μκ² ν΄μ£Όλ―λ‘ νμ΄νλΌμΈ ν¨μ μ λ¬μ±νλ λ° νΉν μ μ©ν©λλ€.
λ€μμ μ΄μ μ§μ μμ μ λν΄ νΈλμ€λμλ₯Ό μ¬μ©νμ¬ νμ΄νλΌμΈ ν¨μ μ λ¬μ±νλ μμ μ λλ€:
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
// Transducer for filtering even numbers
const filterEven = reducer => (
(acc, val) => (val % 2 === 0 ? reducer(acc, val) : acc)
);
// Transducer for doubling numbers
const double = reducer => (
(acc, val) => reducer(acc, val * 2)
);
// Reducer for accumulating results into an array
const arrayReducer = (acc, val) => {
acc.push(val);
return acc;
};
// Compose the transducers
const composedReducer = filterEven(double(arrayReducer));
// Apply the composed reducer to the numbers array
const result = numbers.reduce(composedReducer, []);
console.log(result); // Output: [4, 8, 12, 16, 20]
μ΄ μμ μμ filterEven
κ³Ό double
ν¨μλ arrayReducer
λ₯Ό λ³ννλ νΈλμ€λμμ
λλ€. composedReducer
λ μ΄λ¬ν λ³νλ€μ λ¨μΌ 리λμλ‘ κ²°ν©νκ³ , μ΄ λ¦¬λμλ reduce()
λ©μλμ ν¨κ» μ¬μ©λμ΄ λ°μ΄ν°λ₯Ό λ¨μΌ ν¨μ€λ‘ μ²λ¦¬ν©λλ€.
Ramda.jsλ Lodashμ κ°μ λΌμ΄λΈλ¬λ¦¬λ νΈλμ€λμ μμ
μ μν μ νΈλ¦¬ν°λ₯Ό μ 곡νμ¬ νλ‘μ νΈμμ νμ΄νλΌμΈ ν¨μ μ λ μ½κ² ꡬνν μ μλλ‘ ν©λλ€. μλ₯Ό λ€μ΄, Ramdaμ R.compose
λ νΈλμ€λμ ꡬμ±μ λ¨μνν μ μμ΅λλ€.
2. μ λλ μ΄ν°μ μ΄ν°λ μ΄ν°
μλ°μ€ν¬λ¦½νΈμ μ λλ μ΄ν°μ μ΄ν°λ μ΄ν°λ νμ΄νλΌμΈ ν¨μ μ λ¬μ±νλ λ λ€λ₯Έ λ°©λ²μ μ 곡ν©λλ€. μ λλ μ΄ν°λ₯Ό μ¬μ©νλ©΄ μΌμ μ€μ§νκ³ μ¬κ°ν μ μλ ν¨μλ₯Ό μ μνμ¬ ν λ²μ νλμ© κ°μ μμ±(yield)ν μ μμ΅λλ€. μ΄λ₯Ό ν΅ν΄ νμν λλ§ μμλ₯Ό μ²λ¦¬νλ μ§μ° μ΄ν°λ μ΄ν°λ₯Ό λ§λ€ μ μμ΅λλ€.
λ€μμ μ λλ μ΄ν°λ₯Ό μ¬μ©νμ¬ νμ΄νλΌμΈ ν¨μ μ λ¬μ±νλ μμ μ λλ€:
function* processNumbers(numbers) {
for (const num of numbers) {
if (num % 2 === 0) { // Filter even numbers
yield num * 2; // Double the even numbers
}
}
}
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const result = [...processNumbers(numbers)];
console.log(result); // Output: [4, 8, 12, 16, 20]
μ΄ μμ μμ processNumbers
μ λλ μ΄ν° ν¨μλ μ«μ λ°°μ΄μ λ°λ³΅νκ³ λμΌν 루ν λ΄μμ νν° λ° λ§΅ μ°μ°μ μ μ©ν©λλ€. yield
ν€μλλ₯Ό μ¬μ©νλ©΄ ν¨μκ° μΌμ μ€μ§νκ³ μ¬κ°νμ¬ μ²λ¦¬λ κ°μ ν λ²μ νλμ© μμ±ν μ μμ΅λλ€. μ€νλ λ μ°μ°μ(...
)λ μμ±λ κ°λ€μ λ°°μ΄λ‘ μμ§νλ λ° μ¬μ©λ©λλ€.
μ΄ μ κ·Ό λ°©μμ μ€κ° λ°°μ΄ μμ±μ νΌνμ¬ νΉν λμ©λ λ°μ΄ν°μ μμ μ±λ₯μ ν₯μμν΅λλ€. λν, μ λλ μ΄ν°λ λ°μ΄ν° μ²λ¦¬ μλλ₯Ό μ μ΄νλ λ©μ»€λμ¦μΈ λ°°μ(backpressure)μ μμ°μ€λ½κ² μ§μνλ―λ‘ λΉλκΈ° λ°μ΄ν° μ€νΈλ¦Όμ λ€λ£° λ νΉν μ μ©ν©λλ€.
3. μ¬μ©μ μ μ 루ν
κ°λ¨ν κ²½μ°μλ μ¬λ¬ μ°μ°μ λ¨μΌ ν¨μ€λ‘ κ²°ν©νλ μ¬μ©μ μ μ 루νλ₯Ό μμ±νμ¬ νμ΄νλΌμΈ ν¨μ μ λ¬μ±ν μλ μμ΅λλ€. μ΄ μ κ·Ό λ°©μμ μ΅μ ν νλ‘μΈμ€μ λν κ°μ₯ λ§μ μ μ΄κΆμ μ 곡νμ§λ§ λ λ§μ μμμ μ΄ νμν©λλ€.
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const result = [];
for (const num of numbers) {
if (num % 2 === 0) { // Filter even numbers
result.push(num * 2); // Double the even numbers
}
}
console.log(result); // Output: [4, 8, 12, 16, 20]
μ΄ μμ μμ μ¬μ©μ μ μ 루νλ μ«μ λ°°μ΄μ λ°λ³΅νκ³ λμΌν 루ν λ΄μμ νν° λ° λ§΅ μ°μ°μ μ μ©ν©λλ€. μ΄λ μ€κ° λ°°μ΄ μμ±μ νΌνλ©° μ°κ²°λ μ΄ν°λ μ΄ν° ν¬νΌλ₯Ό μ¬μ©νλ κ²λ³΄λ€ λ ν¨μ¨μ μΌ μ μμ΅λλ€.
μ¬μ©μ μ μ 루νλ μΈλ°ν μ μ΄λ₯Ό μ 곡νμ§λ§, νΈλμ€λμλ μ λλ μ΄ν°λ₯Ό μ¬μ©νλ κ²λ³΄λ€ λ μ₯ν©νκ³ μ μ§ κ΄λ¦¬κ° μ΄λ €μΈ μ μμ΅λλ€. μ΄ μ κ·Ό λ°©μμ μ ννκΈ° μ μ μ₯λ¨μ μ μ μ€νκ² κ³ λ €νμμμ€.
νμ΄νλΌμΈ ν¨μ μ μ΄μ
νμ΄νλΌμΈ ν¨μ μ μ΄μ μ νΉν λμ©λ λ°μ΄ν°μ μ΄λ 볡μ‘ν λ°μ΄ν° λ³νμ λ€λ£° λ μλΉν©λλ€:
- λ©λͺ¨λ¦¬ ν λΉ κ°μ: μ€κ° λ°°μ΄ μμ±μ νΌν¨μΌλ‘μ¨ νμ΄νλΌμΈ ν¨μ μ λ©λͺ¨λ¦¬ ν λΉ λ° κ°λΉμ§ 컬λ μ μ€λ²ν€λλ₯Ό μ€μ λλ€.
- μ±λ₯ ν₯μ: μ¬λ¬ μ°μ°μ λ¨μΌ 루νλ‘ κ²°ν©νλ©΄ λ°λ³΅ νμκ° μ€μ΄λ€κ³ μ λ°μ μΈ μ±λ₯μ΄ ν₯μλ©λλ€.
- ν¨μ¨μ± μ¦λ: μ§μ° νκ°λ₯Ό ν΅ν΄ νμν μμλ§ μ²λ¦¬νμ¬ ν¨μ¨μ±μ λμ± ν₯μμν¬ μ μμ΅λλ€.
- μ½λ κ°λ μ± ν₯μ (νΈλμ€λμ μ¬μ© μ): νΈλμ€λμλ μ μΈμ μ€νμΌμ μ₯λ €νμ¬ μΌλ¨ κ°λ μ νμ νλ©΄ μ½λλ₯Ό λ μ½κ² μ΄ν΄νκ³ μ μ§ κ΄λ¦¬ν μ μλλ‘ ν©λλ€.
μΈμ νμ΄νλΌμΈ ν¨μ μ μ¬μ©ν΄μΌ νλκ°
νμ΄νλΌμΈ ν¨μ μ λ€μκ³Ό κ°μ μλ리μ€μμ κ°μ₯ μ μ©ν©λλ€:
- λμ©λ λ°μ΄ν°μ : λμ©λ λ°μ΄ν°μ μ μ²λ¦¬ν λ μ€κ° λ°°μ΄ μμ±μ μ€λ²ν€λλ μλΉν μ μμ΅λλ€.
- 볡μ‘ν λ°μ΄ν° λ³ν: λ°μ΄ν°μ μ λν΄ μ¬λ¬ λ³νμ μνν λ νμ΄νλΌμΈ ν¨μ μ μ±λ₯μ ν¬κ² ν₯μμν¬ μ μμ΅λλ€.
- μ±λ₯μ΄ μ€μν μ ν리μΌμ΄μ : μ±λ₯μ΄ μ€μν μ ν리μΌμ΄μ μμ νμ΄νλΌμΈ ν¨μ μ λ°μ΄ν° μ²λ¦¬λ₯Ό μ΅μ ννκ³ μ§μ° μκ°μ μ€μ΄λ λ° λμμ΄ λ μ μμ΅λλ€.
κ·Έλ¬λ νμ΄νλΌμΈ ν¨μ μ΄ νμ νμν κ²μ μλλΌλ μ μ μ μνλ κ²μ΄ μ€μν©λλ€. μμ λ°μ΄ν°μ μ΄λ κ°λ¨ν λ°μ΄ν° λ³νμ κ²½μ°, νμ΄νλΌμΈ ν¨μ μ ꡬννλ μ€λ²ν€λκ° μ΄μ λ³΄λ€ ν΄ μ μμ΅λλ€. μ΅μ ν κΈ°λ²μ μ μ©νκΈ° μ μ νμ μ½λλ₯Ό νλ‘νμΌλ§νμ¬ μ±λ₯ λ³λͺ© νμμ μλ³νμμμ€.
μ μΈκ³μ μ€μ μ μ© μ¬λ‘
λ€μν μ°μ λ° μ§μμ κ±Έμ³ μ€μ μ ν리μΌμ΄μ μμ νμ΄νλΌμΈ ν¨μ μ΄ μ΄λ»κ² μ¬μ©λ μ μλμ§ λͺ κ°μ§ μ€μ©μ μΈ μλ₯Ό μ΄ν΄λ³΄κ² μ΅λλ€:
- μ μ μκ±°λ (κΈλ‘λ²): λκ·λͺ¨ μν 리뷰 λ°μ΄ν°μ μ μ²λ¦¬ν΄μΌ νλ μ μ μκ±°λ νλ«νΌμ μμν΄ λ³΄μμμ€. νμ΄νλΌμΈ ν¨μ μ μ¬μ©νμ¬ κ°μ (κΈμ /λΆμ )μ λ°λΌ 리뷰λ₯Ό νν°λ§ν λ€μ κ° λ¦¬λ·°μμ κ΄λ ¨ ν€μλλ₯Ό μΆμΆν μ μμ΅λλ€. μ΄ λ°μ΄ν°λ μν μΆμ² λ° κ³ κ° μλΉμ€λ₯Ό κ°μ νλ λ° μ¬μ©λ μ μμ΅λλ€.
- κΈμ΅ μλΉμ€ (μκ΅ λ°λ): κΈμ΅ κΈ°κ΄μ μ¬κΈ° νμλ₯Ό νμ§νκΈ° μν΄ κ±°λ λ°μ΄ν° μ€νΈλ¦Όμ μ²λ¦¬ν΄μΌ ν©λλ€. νμ΄νλΌμΈ ν¨μ μ μ¬μ©νμ¬ νΉμ κΈ°μ€(μ: κΈμ‘, μμΉ, μκ°)μ λ°λΌ κ±°λλ₯Ό νν°λ§ν λ€μ νν°λ§λ κ±°λμ λν΄ λ³΅μ‘ν μν κ³μ°μ μνν μ μμ΅λλ€.
- μλ£ (μΌλ³Έ λμΏ): μλ£ μλΉμ€ μ 곡μλ μΆμΈμ ν¨ν΄μ μλ³νκΈ° μν΄ νμ λ°μ΄ν°λ₯Ό λΆμν΄μΌ ν©λλ€. νμ΄νλΌμΈ ν¨μ μ μ¬μ©νμ¬ νΉμ 쑰건μ λ°λΌ νμ κΈ°λ‘μ νν°λ§ν λ€μ μ°κ΅¬ λ° λΆμμ μν΄ κ΄λ ¨ μ 보λ₯Ό μΆμΆν μ μμ΅λλ€.
- μ μ‘° (μ€κ΅ μνμ΄): μ μ‘° νμ¬λ μ μ¬μ μΈ μ₯λΉ κ³ μ₯μ μλ³νκΈ° μν΄ μμ° λΌμΈμ μΌμ λ°μ΄ν°λ₯Ό λͺ¨λν°λ§ν΄μΌ ν©λλ€. νμ΄νλΌμΈ ν¨μ μ μ¬μ©νμ¬ λ―Έλ¦¬ μ μλ μκ³κ°μ λ°λΌ μΌμ νλ κ°μ νν°λ§ν λ€μ ν΅κ³ λΆμμ μννμ¬ μ΄μ μ§νλ₯Ό κ°μ§ν μ μμ΅λλ€.
- μμ λ―Έλμ΄ (λΈλΌμ§ μνμΈλ£¨): μμ λ―Έλμ΄ νλ«νΌμ μΈκΈ° μλ μ£Όμ λ₯Ό μλ³νκΈ° μν΄ μ¬μ©μ κ²μλ¬Ό μ€νΈλ¦Όμ μ²λ¦¬ν΄μΌ ν©λλ€. νμ΄νλΌμΈ ν¨μ μ μ¬μ©νμ¬ μΈμ΄ λ° μμΉμ λ°λΌ κ²μλ¬Όμ νν°λ§ν λ€μ κ΄λ ¨ ν΄μνκ·Έμ ν€μλλ₯Ό μΆμΆν μ μμ΅λλ€.
μ΄λ¬ν κ° μμμ νμ΄νλΌμΈ ν¨μ μ λ°μ΄ν° μ²λ¦¬μ μ±λ₯κ³Ό ν¨μ¨μ±μ ν¬κ² ν₯μμμΌ μ‘°μ§μ΄ μκΈ°μ μ νκ² λ°μ΄ν°λ‘λΆν° κ·μ€ν ν΅μ°°λ ₯μ μ»μ μ μλλ‘ ν©λλ€.
κ²°λ‘
μλ°μ€ν¬λ¦½νΈ μ΄ν°λ μ΄ν° ν¬νΌ νμ΄νλΌμΈ ν¨μ μ μ ν리μΌμ΄μ μ λ°μ΄ν° μ²λ¦¬ μ±λ₯μ ν¬κ² ν₯μμν¬ μ μλ κ°λ ₯ν μ΅μ ν κΈ°λ²μ λλ€. μ¬λ¬ μ€νΈλ¦Ό μ°μ°μ λ¨μΌ 루νλ‘ κ²°ν©ν¨μΌλ‘μ¨ νμ΄νλΌμΈ ν¨μ μ λ©λͺ¨λ¦¬ ν λΉμ μ€μ΄κ³ μ±λ₯μ ν₯μμν€λ©° ν¨μ¨μ±μ λμ λλ€. μλ°μ€ν¬λ¦½νΈμ λ΄μ₯ μ΄ν°λ μ΄ν° ν¬νΌκ° μλμΌλ‘ νμ΄νλΌμΈ ν¨μ μ μννμ§λ μμ§λ§, νΈλμ€λμ, μ λλ μ΄ν°, μ¬μ©μ μ μ 루νμ κ°μ κΈ°μ μ μ¬μ©νμ¬ μ΄ μ΅μ νλ₯Ό λ¬μ±ν μ μμ΅λλ€. κ° μ κ·Ό λ°©μμ μ΄μ κ³Ό μ₯λ¨μ μ μ΄ν΄ν¨μΌλ‘μ¨ νΉμ μꡬμ κ°μ₯ μ ν©ν μ λ΅μ μ ννκ³ λ ν¨μ¨μ μ΄κ³ μ±λ₯μ΄ λ°μ΄λ μλ°μ€ν¬λ¦½νΈ μ ν리μΌμ΄μ μ ꡬμΆν μ μμ΅λλ€.
μ΄λ¬ν κΈ°μ μ νμ©νμ¬ μλ°μ€ν¬λ¦½νΈμ λ°μ΄ν° μ²λ¦¬ λ₯λ ₯μ μ μ¬λ ₯μ μ΅λν λ°ννκ³ κ°λ ₯νλ©΄μλ ν¨μ¨μ μΈ μ ν리μΌμ΄μ μ λ§λμμμ€. μ°λ¦¬κ° μ²λ¦¬νλ λ°μ΄ν°μ μμ΄ κ³μ μ¦κ°ν¨μ λ°λΌ νμ΄νλΌμΈ ν¨μ κ³Ό κ°μ μ΅μ ν κΈ°μ μ μ€μμ±μ λμ± μ»€μ§ κ²μ λλ€.