본문 바로가기
반응형

전체 글553

백준 C# - 1149 +) 풀이 DP를 이용해서 풀어야한다. DP알아보러 가기 C# - 다이나믹 프로그래밍(DP) 다이나믹 프로그래밍 메모리를 적절히 사용하여 수행 시간 효율성을 향상 시키는 최적화 기법중 하나이다. 큰 문제를 작은 부분 문제로 나누어 해결하며 이미 계산된 작은 문제의 결과를 점화식 구하기 01 일단 작성해보자 예제 1번을 가지고 한 번 적어본 후에 관계성을 구해보았다. N = 1, N = 2, N = 3 차근차근 최솟값을 구하면서 다음 N을 구하면 되는 것을 밑에 오른쪽표에서 확인할 수 있다. 02 점화식 구하기 위의 관계성을 통해 아래와 같이 점화식을 구할 수 있다. 코드 전문 using System; namespace baek2 { class Program { public static void Main() { in.. 2023. 12. 4.
백준 C# - 15988 +) 풀이 이 문제를 풀기 앞서 아래 문제를 먼저 풀고 오는 것을 추천한다. 백준 C# - 9095 백준 C# - 9095 +)풀이 DP를 이용해서 풀어야한다. DP알아보러 가기 C# - 다이나믹 프로그래밍(DP) 다이나믹 프로그래밍 메모리를 적절히 사용하여 수행 시간 효율성을 향상 시키는 최적화 기법중 하나이다. 큰 문제를 작 code-piggy.tistory.com 점화식 부분은 9095와 동일하다. 01 케이스 T 다른 부분이 있다면 케이스 T가 추가되었다. while (T > 0) { int N = int.Parse(Console.ReadLine()); Console.WriteLine(dp[N-1] % 1000000009); T--; } 02 % 1000000009 모듈려 연산 C# - 모듈러 연산(나머지 .. 2023. 12. 4.
C# - 모듈러 연산(나머지 분배 법칙) 백준에서 DP관련 문제를 풀때 출력 부분에 큰 수로 나눈 나머지를 구하라는 부분이 계속 있어서 이부분이 왜 필요한지 자세히 알고 싶어졌다. 모듈러(Modulo) 나눗셈의 나머지를 계산하는 연산이다. 일반적으로 mod 혹은 %기호료 표시된다. a mod b = r a = 나눠지는수, b = 나누는 수, r 나머지 모듈러 연산과 분배법칙 어떤 수 m으로 나누었을 때 나머지는 덧셈에 대해 분배된다. ( a + b ) mod m = (( a mod m )+( b mod m )) mod m 예시 ( 7 + 5 ) mod 3=(( 7 mod 3 )+( 5 mod 3 )) mod 3 12 mod 3 = ( 1 + 2 ) mod 3 0 = 3 mod 3 DP에서 왜 모듈러 연산을 사용할까? 중간에 발생하는 값들이 매우.. 2023. 12. 4.
Unity - 의존성 주입(Dependency Injection) 의존성 타입(Dependency Injection) 정적 멤버 변수객체간의 의존성을 외부에서 주입하여 객체 간 결합도를 낮추고 유연성을 높인다. 이는 객체가 직접 자신이 필요로 하는 리소스를 생성하지 않고 외부에서 주입받아 사용하는 방시이다. 이를 사용하면 리소스를 생성하거나 관리하지 않아도 된다. 1. 의존성 주입을 사용하지 않는 경우 ProduectService 클래스가 Logger클래스를 직접 생성하여 사용하고 있다. 그러므로 테스트 중에 이 의존성을 제어하기가 어렵다. public class Logger { public void Log(string message) { Console.WriteLine($"Logging: {message}"); } } public class ProductService.. 2023. 12. 3.
Unity - Constructor Chaining(생성자 체이닝) Constructor Chaining 여러 생성자 중에서 가장 많은 입력을 필요로 하는 생성자를 기준으로 하여, 입력할 값의 수가 적은 다른 생성자들을 이 기준이 되는 생성자를 통해 간접적으로 호출하는 기법이다. 이를 통해 코드의 중복을 최소화하고 재사용성을 높일 수 있다. 1. 클래스 내의 생성자들을 연쇄적으로 호출하는 경우 : this() 키워드 사용 01 생성자 체이닝을 사용하지 않는 경우 두번째 생성자와 세번째 생성자에서 this.name = name 코드가 중복되는 것을 확인할 수 있다. class Piggy { string name = ""; int weight = 0: public Piggy() { } public Piggy(string name) { this.name = name; } pu.. 2023. 12. 3.
Effective C# - Item 17 표준 Dispose패턴을 구현하라 .NET에서는 비관리 리소스를 System.Runtime.Interop.SafeHandel을 상송한 파생 클래스를 통해 표현하는데 이 클래스 또한 Dispose패턴을 완변하게 구현하고 있다. 파생 클래스는 다음 작업을 수행해야 한다. -파생 클래스가 고유의 리소스 정리 작업을 수행해야 한다면 베이스 클래스에서 정의한 가상 메서드를 재정의 한다. - 멤버 필드로 비관리 리소스를 포함하는 경우에만 finalizer추가해야 한다. - 베이스 클래스에서 정의하고 있는 가상 함수를 반드시 재호출 해야 한다. 비관리 리소스를 포함하고 있다면 무조건 finalizer를 구현해야 한다. IDisposable인터페이스는 단 하나의 메서드만을 가진다. public interface IDisposable { void Dis.. 2023. 12. 3.
반응형