κ²¬κ³ νκ³ μ λ’°ν μ μλ μννΈμ¨μ΄ μ ν리μΌμ΄μ  ꡬμΆμ μ€μν νμ μμ  λ¦¬μμ€ κ΄λ¦¬ λ° μμ€ν  ν λΉ μ νμ 볡μ‘μ±μ νꡬν©λλ€. 리μμ€ λμλ₯Ό λ°©μ§νκ³ μ½λ νμ§μ ν₯μμν€λ λ°©λ²μ μμ보μΈμ.
νμ μμ  λ¦¬μμ€ κ΄λ¦¬: μμ€ν  ν λΉ μ ν ꡬν
리μμ€ κ΄λ¦¬λ μννΈμ¨μ΄ κ°λ°, νΉν λ©λͺ¨λ¦¬, νμΌ νΈλ€, λ€νΈμν¬ μμΌ λ° λ°μ΄ν°λ² μ΄μ€ μ°κ²°κ³Ό κ°μ μμ€ν  리μμ€λ₯Ό λ€λ£° λ μ€μν μΈ‘λ©΄μ λλ€. λΆμ μ ν 리μμ€ κ΄λ¦¬λ 리μμ€ λμ, μμ€ν  λΆμμ μ±, μ¬μ§μ΄ 보μ μ·¨μ½μ±μΌλ‘ μ΄μ΄μ§ μ μμ΅λλ€. μμ€ν  ν λΉ μ νκ³Ό κ°μ κΈ°μ μ ν΅ν΄ λ¬μ±λλ νμ μμ  λ¦¬μμ€ κ΄λ¦¬λ νλ‘κ·Έλ¨ λ΄μ μ μ΄ νλ¦ λλ μ€λ₯ 쑰건μ κ΄κ³μμ΄ λ¦¬μμ€κ° νμ μ¬λ°λ₯΄κ² νλλκ³ ν΄μ λλλ‘ λ³΄μ₯νλ κ°λ ₯ν λ©μ»€λμ¦μ μ 곡ν©λλ€.
λ¬Έμ μ : 리μμ€ λμ λ° μμΈ‘ν μ μλ λμ
λ§μ νλ‘κ·Έλλ° μΈμ΄μμ 리μμ€λ ν λΉ ν¨μ λλ μμ€ν  νΈμΆμ μ¬μ©νμ¬ λͺ μμ μΌλ‘ νλλ©λλ€. μ΄λ¬ν 리μμ€λ ν΄λΉ ν΄μ  ν¨μλ₯Ό μ¬μ©νμ¬ λͺ μμ μΌλ‘ ν΄μ λμ΄μΌ ν©λλ€. 리μμ€λ₯Ό ν΄μ νμ§ λͺ»νλ©΄ 리μμ€ λμκ° λ°μν©λλ€. μκ°μ΄ μ§λ¨μ λ°λΌ μ΄λ¬ν λμλ μμ€ν  리μμ€λ₯Ό μμ§νμ¬ μ±λ₯ μ ν λ° κ²°κ΅ μ ν리μΌμ΄μ  μ€λ₯λ‘ μ΄μ΄μ§ μ μμ΅λλ€. λν μμΈκ° λ°μνκ±°λ ν¨μκ° νλλ 리μμ€λ₯Ό ν΄μ νμ§ μκ³ μ‘°κΈ°μ λ°νλλ κ²½μ° μν©μ λμ± μ¬κ°ν΄μ§λλ€.
μ μ¬μ μΈ νμΌ νΈλ€ λμλ₯Ό 보μ¬μ£Όλ λ€μ C μμ λ₯Ό κ³ λ €νμμμ€.
FILE *fp = fopen("data.txt", "r");
if (fp == NULL) {
  perror("Error opening file");
  return;
}
// Perform operations on the file
if (/* some condition */) {
  // Error condition, but file is not closed
  return;
}
fclose(fp); // File closed, but only in the success path
μ΄ μμμ `fopen`μ΄ μ€ν¨νκ±°λ 쑰건 λΈλ‘μ΄ μ€νλλ©΄ νμΌ νΈλ€ `fp`κ° λ«νμ§ μμ 리μμ€ λμκ° λ°μν©λλ€. μ΄λ μλ ν λΉ λ° ν΄μ μ μμ‘΄νλ κΈ°μ‘΄ 리μμ€ κ΄λ¦¬ λ°©μμμ νν λνλλ ν¨ν΄μ λλ€.
ν΄κ²°μ± : μμ€ν  ν λΉ μ ν λ° RAII
μμ€ν  ν λΉ μ νκ³Ό 리μμ€ νλμ μ΄κΈ°ν(RAII) κ΄μ©κ΅¬λ 리μμ€ κ΄λ¦¬μ λν κ°λ ₯νκ³ νμ μμ ν μ루μ μ μ 곡ν©λλ€. RAIIλ 리μμ€ νλμ΄ κ°μ²΄μ μλͺ κ³Ό μ°κ²°λλλ‘ λ³΄μ₯ν©λλ€. 리μμ€λ κ°μ²΄μ μμ± μ€μ νλλκ³ κ°μ²΄μ μλ©Έ μ€μ μλμΌλ‘ ν΄μ λ©λλ€. μ΄ μ κ·Ό λ°©μμ μμΈ λλ μ‘°κΈ° λ°νμ΄ μλ κ²½μ°μλ 리μμ€κ° νμ ν΄μ λλλ‘ λ³΄μ₯ν©λλ€.
RAIIμ μ£Όμ μμΉ:
- 리μμ€ νλ: 리μμ€λ ν΄λμ€μ μμ±μ μ€μ νλλ©λλ€.
 - 리μμ€ ν΄μ : 리μμ€λ λμΌν ν΄λμ€μ μλ©Έμμμ ν΄μ λ©λλ€.
 - μμ κΆ: ν΄λμ€λ 리μμ€λ₯Ό μμ νκ³ μλͺ μ κ΄λ¦¬ν©λλ€.
 
ν΄λμ€ λ΄μμ 리μμ€ κ΄λ¦¬λ₯Ό μΊ‘μνν¨μΌλ‘μ¨ RAIIλ μλ 리μμ€ ν΄μ μ νμμ±μ μμ κ³ λ¦¬μμ€ λμμ μνμ μ€μ΄λ©° μ½λ μ μ§ κ΄λ¦¬μ±μ ν₯μμν΅λλ€.
ꡬν μμ
C++ μ€λ§νΈ ν¬μΈν°
C++λ λ©λͺ¨λ¦¬ κ΄λ¦¬λ₯Ό μν΄ RAIIλ₯Ό ꡬννλ μ€λ§νΈ ν¬μΈν°(μ: `std::unique_ptr`, `std::shared_ptr`)λ₯Ό μ 곡ν©λλ€. μ΄λ¬ν μ€λ§νΈ ν¬μΈν°λ λ²μλ₯Ό λ²μ΄λ λ κ΄λ¦¬νλ λ©λͺ¨λ¦¬λ₯Ό μλμΌλ‘ ν λΉ ν΄μ νμ¬ λ©λͺ¨λ¦¬ λμλ₯Ό λ°©μ§ν©λλ€. μ€λ§νΈ ν¬μΈν°λ μμΈ μμ νκ³ λ©λͺ¨λ¦¬ λμκ° μλ C++ μ½λλ₯Ό μμ±νκΈ° μν νμ λꡬμ λλ€.
`std::unique_ptr`λ₯Ό μ¬μ©ν μ:
#include <memory>
int main() {
  std::unique_ptr<int> ptr(new int(42));
  // 'ptr' owns the dynamically allocated memory.
  // When 'ptr' goes out of scope, the memory is automatically deallocated.
  return 0;
}
`std::shared_ptr`λ₯Ό μ¬μ©ν μ:
#include <memory>
int main() {
  std::shared_ptr<int> ptr1(new int(42));
  std::shared_ptr<int> ptr2 = ptr1; // Both ptr1 and ptr2 share ownership.
  // The memory is deallocated when the last shared_ptr goes out of scope.
  return 0;
}
C++μ νμΌ νΈλ€ λνΌ
RAIIλ₯Ό μ¬μ©νμ¬ νμΌ νΈλ€ κ΄λ¦¬λ₯Ό μΊ‘μννλ μ¬μ©μ μ μ ν΄λμ€λ₯Ό λ§λ€ μ μμ΅λλ€.
#include <iostream>
#include <fstream>
class FileHandler {
 private:
  std::fstream file;
  std::string filename;
 public:
  FileHandler(const std::string& filename, std::ios_base::openmode mode) : filename(filename) {
    file.open(filename, mode);
    if (!file.is_open()) {
      throw std::runtime_error("Could not open file: " + filename);
    }
  }
  ~FileHandler() {
    if (file.is_open()) {
      file.close();
      std::cout << "File " << filename << " closed successfully.\n";
    }
  }
  std::fstream& getFileStream() {
    return file;
  }
  //Prevent copy and move
  FileHandler(const FileHandler&) = delete;
  FileHandler& operator=(const FileHandler&) = delete;
  FileHandler(FileHandler&&) = delete;
  FileHandler& operator=(FileHandler&&) = delete;
};
int main() {
  try {
    FileHandler myFile("example.txt", std::ios::out);
    myFile.getFileStream() << "Hello, world!\n";
    // File is automatically closed when myFile goes out of scope.
  } catch (const std::exception& e) {
    std::cerr << "Exception: " << e.what() << std::endl;
    return 1;
  }
  return 0;
}
μ΄ μμμ `FileHandler` ν΄λμ€λ μμ±μμμ νμΌ νΈλ€μ νλνκ³ μλ©Έμμμ ν΄μ ν©λλ€. μ΄λ₯Ό ν΅ν΄ `try` λΈλ‘ λ΄μμ μμΈκ° λ°μνλλΌλ νμΌμ΄ νμ λ«νλλ‘ λ³΄μ₯λ©λλ€.
Rustμ RAII
Rustμ μμ κΆ μμ€ν κ³Ό μ°¨μ© κ²μ¬κΈ°λ μ»΄νμΌ μκ°μ RAII μμΉμ μ μ©ν©λλ€. μ΄ μΈμ΄λ 리μμ€κ° λ²μλ₯Ό λ²μ΄λ λ νμ ν΄μ λλλ‘ λ³΄μ₯νμ¬ λ©λͺ¨λ¦¬ λμ λ° κΈ°ν 리μμ€ κ΄λ¦¬ λ¬Έμ λ₯Ό λ°©μ§ν©λλ€. Rustμ `Drop` νΈλ μ΄νΈλ 리μμ€ μ 리 λ‘μ§μ ꡬννλ λ° μ¬μ©λ©λλ€.
struct FileGuard {
    file: std::fs::File,
    filename: String,
}
impl FileGuard {
    fn new(filename: &str) -> Result<FileGuard, std::io::Error> {
        let file = std::fs::File::create(filename)?;
        Ok(FileGuard { file, filename: filename.to_string() })
    }
}
impl Drop for FileGuard {
    fn drop(&mut self) {
        println!("File {} closed.", self.filename);
        // The file is automatically closed when the FileGuard is dropped.
    }
}
fn main() -> Result<(), std::io::Error> {
    let _file_guard = FileGuard::new("output.txt")?;
    // Do something with the file
    Ok(())
}
μ΄ Rust μμ μμ `FileGuard`λ `new` λ©μλμμ νμΌ νΈλ€μ νλνκ³ `FileGuard` μΈμ€ν΄μ€κ° μμ λ λ(λ²μλ₯Ό λ²μ΄λ λ) νμΌμ λ«μ΅λλ€. Rustμ μμ κΆ μμ€ν μ ν λ²μ νλμ μμ μλ§ νμΌμ μ‘΄μ¬νλλ‘ νμ¬ λ°μ΄ν° κ²½μ λ° κΈ°ν λμμ± λ¬Έμ λ₯Ό λ°©μ§ν©λλ€.
νμ μμ  λ¦¬μμ€ κ΄λ¦¬μ μ΄μ 
- 리μμ€ λμ κ°μ: RAIIλ 리μμ€κ° νμ ν΄μ λλλ‘ λ³΄μ₯νμ¬ λ¦¬μμ€ λμμ μνμ μ΅μνν©λλ€.
 - μμΈ μμ μ± ν₯μ: RAIIλ μμΈκ° μλ κ²½μ°μλ 리μμ€κ° ν΄μ λλλ‘ λ³΄μ₯νμ¬ λ³΄λ€ κ°λ ₯νκ³ μ λ’°ν μ μλ μ½λλ₯Ό λ§λλλ€.
 - μ½λ λ¨μν: RAIIλ μλ 리μμ€ ν λΉ ν΄μ μ νμμ±μ μμ μ½λ λ¨μν λ° μ€λ₯ λ°μ κ°λ₯μ±μ μ€μ λλ€.
 - μ½λ μ μ§ κ΄λ¦¬μ± μ¦κ°: ν΄λμ€ λ΄μμ 리μμ€ κ΄λ¦¬λ₯Ό μΊ‘μνν¨μΌλ‘μ¨ RAIIλ μ½λ μ μ§ κ΄λ¦¬μ±μ ν₯μμν€κ³ 리μμ€ μ¬μ©μ λν΄ μΆλ‘ νλ λ° νμν λ Έλ ₯μ μ€μ λλ€.
 - μ»΄νμΌ μκ° λ³΄μ₯: Rustμ κ°μ μΈμ΄λ 리μμ€ κ΄λ¦¬μ λν μ»΄νμΌ μκ° λ³΄μ₯μ μ 곡νμ¬ μ½λ μ λ’°μ±μ λμ± ν₯μμν΅λλ€.
 
κ³ λ € μ¬ν λ° λͺ¨λ² μ¬λ‘
- μ μ€ν μ€κ³: RAIIλ₯Ό μΌλμ λκ³ ν΄λμ€λ₯Ό μ€κ³νλ €λ©΄ 리μμ€ μμ κΆ λ° μλͺ μ λν μ μ€ν κ³ λ €κ° νμν©λλ€.
 - μν μ’ μμ± λ°©μ§: RAII κ°μ²΄ κ°μ μν μ’ μμ±μ κ΅μ°© μν λλ λ©λͺ¨λ¦¬ λμλ‘ μ΄μ΄μ§ μ μμ΅λλ€. μ½λλ₯Ό μ μ€νκ² κ΅¬μ‘°ννμ¬ μ΄λ¬ν μ’ μμ±μ λ°©μ§νμμμ€.
 - νμ€ λΌμ΄λΈλ¬λ¦¬ κ΅¬μ± μμ μ¬μ©: C++μμ μ€λ§νΈ ν¬μΈν°μ κ°μ νμ€ λΌμ΄λΈλ¬λ¦¬ κ΅¬μ± μμλ₯Ό νμ©νμ¬ λ¦¬μμ€ κ΄λ¦¬λ₯Ό λ¨μννκ³ μ€λ₯ μνμ μ€μ λλ€.
 - μ΄λ μλ―Έλ‘ κ³ λ €: λΉμ©μ΄ λ§μ΄ λλ 리μμ€λ₯Ό μ²λ¦¬ν λλ μ΄λ μλ―Έλ‘ μ μ¬μ©νμ¬ μμ κΆμ ν¨μ¨μ μΌλ‘ μ΄μ ν©λλ€.
 - μ€λ₯λ₯Ό μ μ νκ² μ²λ¦¬: 리μμ€ νλ μ€μ μ€λ₯κ° λ°μνλλΌλ 리μμ€κ° ν΄μ λλλ‘ μ μ ν μ€λ₯ μ²λ¦¬λ₯Ό ꡬνν©λλ€.
 
κ³ κΈ κΈ°μ
μ¬μ©μ μ μ ν λΉμ
κ²½μ°μ λ°λΌ μμ€ν μμ μ 곡νλ κΈ°λ³Έ λ©λͺ¨λ¦¬ ν λΉμκ° νΉμ  μ ν리μΌμ΄μ μ μ ν©νμ§ μμ μ μμ΅λλ€. μ΄λ¬ν κ²½μ° μ¬μ©μ μ μ ν λΉμλ₯Ό μ¬μ©νμ¬ νΉμ  λ°μ΄ν° ꡬ쑰 λλ μ¬μ© ν¨ν΄μ λν λ©λͺ¨λ¦¬ ν λΉμ μ΅μ νν μ μμ΅λλ€. μ¬μ©μ μ μ ν λΉμλ νΉμ μμ© νλ‘κ·Έλ¨μ λν νμ μμ  λ©λͺ¨λ¦¬ κ΄λ¦¬λ₯Ό μ 곡νκΈ° μν΄ RAIIμ ν΅ν©λ μ μμ΅λλ€.
μμ (κ°λ μ  C++):
template <typename T, typename Allocator = std::allocator<T>>
class VectorWithAllocator {
private:
  std::vector<T, Allocator> data;
  Allocator allocator;
public:
  VectorWithAllocator(const Allocator& alloc = Allocator()) : allocator(alloc), data(allocator) {}
  ~VectorWithAllocator() { /* Destructor automatically calls std::vector's destructor, which handles deallocation via the allocator*/ }
  // ... Vector operations using the allocator ...
};
κ²°μ μ  μ΅μ’ ν
μΌλΆ μλ리μ€μμλ κ°μ²΄μ μλ©Έμμλ§ μμ‘΄νμ§ μκ³ νΉμ  μμ μ 리μμ€λ₯Ό ν΄μ νλ κ²μ΄ μ€μν©λλ€. κ²°μ μ  μ΅μ’ ν κΈ°μ μ μ¬μ©νλ©΄ λͺ μμ  λ¦¬μμ€ ν΄μ κ° κ°λ₯νμ¬ λ¦¬μμ€ κ΄λ¦¬μ λν λ λ§μ μ μ΄κ° κ°λ₯ν©λλ€. μ΄λ μ¬λ¬ μ€λ λ λλ νλ‘μΈμ€ κ°μ 곡μ λλ 리μμ€λ₯Ό μ²λ¦¬ν λ νΉν μ€μν©λλ€.
RAIIλ *μλ* ν΄μ λ₯Ό μ²λ¦¬νκ³ , κ²°μ μ  μ΅μ’ νλ *λͺ μμ * ν΄μ λ₯Ό μ²λ¦¬ν©λλ€. μΌλΆ μΈμ΄/νλ μμν¬λ μ΄μ λν νΉμ  λ©μ»€λμ¦μ μ 곡ν©λλ€.
μΈμ΄λ³ κ³ λ € μ¬ν
C++
- μ€λ§νΈ ν¬μΈν°: `std::unique_ptr`, `std::shared_ptr`, `std::weak_ptr`
 - RAII κ΄μ©κ΅¬: ν΄λμ€ λ΄μμ 리μμ€ κ΄λ¦¬ μΊ‘μν.
 - μμΈ μμ μ±: μμΈκ° λ°μνλλΌλ 리μμ€κ° ν΄μ λλλ‘ RAIIλ₯Ό μ¬μ©ν©λλ€.
 - μ΄λ μλ―Έλ‘ : μ΄λ μλ―Έλ‘ μ νμ©νμ¬ λ¦¬μμ€ μμ κΆμ ν¨μ¨μ μΌλ‘ μ΄μ ν©λλ€.
 
Rust
- μμ κΆ μμ€ν : Rustμ μμ κΆ μμ€ν κ³Ό μ°¨μ© κ²μ¬κΈ°λ μ»΄νμΌ μκ°μ RAII μμΉμ μ μ©ν©λλ€.
 - `Drop` νΈλ μ΄νΈ: 리μμ€ μ 리 λ‘μ§μ μ μνλ €λ©΄ `Drop` νΈλ μ΄νΈλ₯Ό ꡬνν©λλ€.
 - μλͺ : 리μμ€μ λν μ°Έμ‘°κ° μ ν¨νμ§ νμΈνλ €λ©΄ μλͺ μ μ¬μ©ν©λλ€.
 - Result μ ν: μ€λ₯ μ²λ¦¬μ `Result` μ νμ μ¬μ©ν©λλ€.
 
Java (try-with-resources)
Javaλ κ°λΉμ§ μμ§λμ§λ§ νΉμ  리μμ€(μ: νμΌ μ€νΈλ¦Ό)λ RAIIμ μ μ¬νκ² λΈλ‘ λμμ 리μμ€λ₯Ό μλμΌλ‘ λ«λ `try-with-resources` λ¬Έμ μ¬μ©νμ¬ λͺ μμ  κ΄λ¦¬λ₯Ό ν΅ν΄ μ¬μ ν μ΄μ μ μ»μ΅λλ€.
try (BufferedReader br = new BufferedReader(new FileReader("example.txt"))) {
    String line;
    while ((line = br.readLine()) != null) {
        System.out.println(line);
    }
} catch (IOException e) {
    e.printStackTrace();
}
// br.close() is automatically called here
Python (with λ¬Έ)
Pythonμ `with` λ¬Έμ RAIIμ μ μ¬νκ² λ¦¬μμ€κ° μ μ νκ² κ΄λ¦¬λλλ‘ λ³΄μ₯νλ 컨ν μ€νΈ κ΄λ¦¬μλ₯Ό μ 곡ν©λλ€. κ°μ²΄λ 리μμ€ νλ λ° ν΄μ λ₯Ό μ²λ¦¬νκΈ° μν΄ `__enter__` λ° `__exit__` λ©μλλ₯Ό μ μν©λλ€.
with open("example.txt", "r") as f:
    for line in f:
        print(line)
# f.close() is automatically called here
κΈλ‘λ² κ΄μ  λ° μμ
νμ μμ  λ¦¬μμ€ κ΄λ¦¬ μμΉμ λ€μν νλ‘κ·Έλλ° μΈμ΄ λ° μννΈμ¨μ΄ κ°λ° νκ²½μμ 보νΈμ μΌλ‘ μ μ©ν μ μμ΅λλ€. κ·Έλ¬λ νΉμ  ꡬν μΈλΆ μ 보 λ° λͺ¨λ² μ¬λ‘λ μΈμ΄ λ° λμ νλ«νΌμ λ°λΌ λ€λ₯Ό μ μμ΅λλ€.
μμ 1: λ°μ΄ν°λ² μ΄μ€ μ°κ²° νλ§
λ°μ΄ν°λ² μ΄μ€ μ°κ²° νλ§μ λ°μ΄ν°λ² μ΄μ€ κΈ°λ° μ ν리μΌμ΄μ μ μ±λ₯μ ν₯μμν€λ λ° μ¬μ©λλ μΌλ°μ μΈ κΈ°μ μ λλ€. μ°κ²° νμ μ¬λ¬ μ€λ λ λλ νλ‘μΈμ€μμ μ¬μ¬μ©ν μ μλ μΌλ ¨μ μ΄λ¦° λ°μ΄ν°λ² μ΄μ€ μ°κ²°μ μ μ§ κ΄λ¦¬ν©λλ€. νμ μμ  λ¦¬μμ€ κ΄λ¦¬λ₯Ό μ¬μ©νμ¬ λ°μ΄ν°λ² μ΄μ€ μ°κ²°μ΄ λ μ΄μ νμνμ§ μμ λ νμ νλ‘ λ°νλλλ‘ νμ¬ μ°κ²° λμλ₯Ό λ°©μ§ν μ μμ΅λλ€.
μ΄ κ°λ μ λμΏμμ μΉ μ ν리μΌμ΄μ μ κ°λ°νλ , λ°λμμ λͺ¨λ°μΌ μ±μ κ°λ°νλ , λ΄μμμ κΈμ΅ μμ€ν μ κ°λ°νλ μ  μΈκ³μ μΌλ‘ μ μ© κ°λ₯ν©λλ€.
μμ 2: λ€νΈμν¬ μμΌ κ΄λ¦¬
λ€νΈμν¬ μμΌμ λ€νΈμν¬ μ ν리μΌμ΄μ μ ꡬμΆνλ λ° νμμ μ λλ€. μ μ ν μμΌ κ΄λ¦¬λ 리μμ€ λμλ₯Ό λ°©μ§νκ³ μ°κ²°μ΄ μ μμ μΌλ‘ λ«νλλ‘ νλ λ° μ€μν©λλ€. νμ μμ  λ¦¬μμ€ κ΄λ¦¬λ₯Ό μ¬μ©νμ¬ μ€λ₯ λλ μμΈκ° μλ κ²½μ°μλ μμΌμ΄ λ μ΄μ νμνμ§ μμ λ νμ λ«νλλ‘ ν μ μμ΅λλ€.
μ΄λ λ°©κ°λ‘λ₯΄μμ λΆμ° μμ€ν μ ꡬμΆνλ , μμΈμμ κ²μ μλ²λ₯Ό ꡬμΆνλ , μλλμμ ν΅μ νλ«νΌμ ꡬμΆνλ λ§μ°¬κ°μ§λ‘ μ μ©λ©λλ€.
κ²°λ‘
νμ μμ  λ¦¬μμ€ κ΄λ¦¬ λ° μμ€ν  ν λΉ μ ν, νΉν RAII κ΄μ©κ΅¬λ κ²¬κ³ νκ³ μ λ’°ν μ μμΌλ©° μ μ§ κ΄λ¦¬ κ°λ₯ν μννΈμ¨μ΄λ₯Ό ꡬμΆνκΈ° μν νμ κΈ°μ μ λλ€. ν΄λμ€ λ΄μμ 리μμ€ κ΄λ¦¬λ₯Ό μΊ‘μννκ³ μ€λ§νΈ ν¬μΈν° λ° μμ κΆ μμ€ν κ³Ό κ°μ μΈμ΄λ³ κΈ°λ₯μ νμ©ν¨μΌλ‘μ¨ κ°λ°μλ 리μμ€ λμμ μνμ ν¬κ² μ€μ΄κ³ , μμΈ μμ μ±μ κ°μ νκ³ , μ½λλ₯Ό λ¨μνν μ μμ΅λλ€. μ΄λ¬ν μμΉμ λ°λ₯΄λ©΄ μ  μΈκ³μ μΌλ‘ λμ± μμΈ‘ κ°λ₯νκ³ μμ μ μ΄λ©° κΆκ·Ήμ μΌλ‘ μ±κ³΅μ μΈ μννΈμ¨μ΄ νλ‘μ νΈλ₯Ό μνν μ μμ΅λλ€. μΆ©λμ λ°©μ§νλ κ²λΏλ§ μλλΌ μ¬μ©μκ° μ΄λμ μλ μμ μ μΌλ‘ μλΉμ€λ₯Ό μ 곡νλ ν¨μ¨μ μ΄κ³ νμ₯ κ°λ₯νλ©° μ λ’°ν μ μλ μννΈμ¨μ΄λ₯Ό λ§λλ κ²μ λλ€.