본문 바로가기
반응형

분류 전체보기552

백준 C# - 7562 +) 풀이 문제에서 최소부분이 있으면 BFS를 이용해야 한다. 앞서 BFS문제들을 풀어봤을때 큰 틀은 비슷한 것을 알 수 있다. 이 문제에서 크게 다른 점이 있다면 나이트의 움직임이다. 직접 좌표를 찍어보자 그러면 이를 각각의 배열들로 표현하면 아래와 같이 나온다. static int[] dirX = { 2, 1, -1, -2, -2, -1, 1, 2 }; static int[] dirY = { 1, 2, 2, 1, -1 , -2 , -2, -1 }; BFS 알고리즘 static void BFS(int x , int y, int n) { Queue queue = new Queue(); queue.Enqueue(new Tuple(x,y)); while (queue.Count>0) { Tuple now = queue... 2023. 12. 20.
운영체제 - 스레드, 단일 스레드 프로세스와 멀티 스레드 프로세스, 스레드의 구성요소, 멀티프로세스와 멀티 스레드 스레드(Thread) 프로세스를 구성하는 실행의 단위이다. 조금 더 정확하게 표현하자면 스레드란 프로세스를 구성하는 실행의 흐름 단위이다. 그리고 하나의 프로세스는 하나 이상의 스레드를 가질 수 있다. 그러므로 스레드를 이용하면 하나의 프로세스에서 여러 부분을 동시에 실행할 수 있다. 단일 스레드 프로세스 실행 흐름이 하나인 프로세스이다. 즉 한의 작업만을 동시에 처리할 수 있다. 그러므로 작업이 순차적으로 진행된다. 멀티 스레드 프로세스 멀티 스레드 프로세스에서는 하나의 프로세스가 한 번에 여러 일을 동시에 처리할 수 있다. 그러므로 여러 작업이 동시에 진행될 수 있다. 스레드의 구성 요소 실행에 필요한 최소한의 정보들이다. 이를 이용해서 독립적으로 실행된다. 01 스레드 ID(Thread ID) 각 .. 2023. 12. 20.
백준 C# - 7576 +) 풀이 문제에 최소가 들어가면 BFS와 관련된 확률이 높다. 들어가기 앞서 주의! 01 그래프 (0,0)부터 입력받기 DFS, BFS문제에서 음수가 되는 경우를 배제하기 위해서 그래프값을 (1,1)을 넣으면서 진행하였는데 여기서는 그렇게 하면 안된다. 원인이 이거인지 모르고 열심히 그리다가 시간을 많이 소모하였다.. 하ㅏㅎㅏ.. 앞으로 (0,0)에 넣고 조건문을 넣어 푸는게 좋을 것 같다는 생각이 들었다. 02 string에 어떤 값이 들어가는지 꼭 확인하기 string문을 입력받으면 띄어쓰기 까지 입력이 받아진다. string s = Console.ReadLine() 그래서 Replace를 사용해서 띄어쓰기를 삭제했다. string s = Console.ReadLine().Replace(" ",""); 그랬더.. 2023. 12. 19.
Effective C# - Item 25 타입 매개변수로 인스턴스 필드를 만들 필요가 없다면 제네릭 메서드를 정의하라 제네릭 클래스를 정의하면 클래스 전체에 대하여 제약 조건을 고려해야한다. 제약 조건의 적용 범위가 넓어지면 넓어질수록 코드를 수정하기가 까다로워진다. 그러므로 제네릭 클래스보다 제네릭 메서드를 사용하는 것이 낫다. 1. 제네릭 클래스를 사용하는 경우 public static class Utils { public static T Max(T left, T right) => Comparer.Default.Compare(left,right) Comparer.Default.Compare(left,right) > 0 > left : right; } 제네릭 클래스를 사용하는 경우 타입 매개변수를 명시적으로 지정.. 2023. 12. 18.
백준 C# - 4963 +) 풀이 우리가 앞서 풀었던 문제는 상하좌우만 움직이는 문제이다. 하지만 이번 문제는 대각선까지 움직이는 것이 추가되었다. 이부분만 다르지 나머지 부분은 똑같다. 나머지 부분에 대한 설명은 아래 문제 참조 백준 C# - 2667 +) 풀이 이 문제를 풀기 앞서 아래 문제를 풀고 오는 것을 추천한다. 2667이 아래 문제의 심화버전이다. 백준 C# - 1012 백준 C# - 1012 +) 풀이 먼저 문제 이해부터 해보자 문제에서 배추 흰지렁이가 한 배추의 code-piggy.tistory.com 대각선 + 상하좌우 움직이는 방법 대각선과 상하좌우로 움직이는 경우의수를 구하면 아래와 같이 9가지가 나온다. 01 상하좌우 코드 상하좌우를 확인하면서 구하는 코드는 아래와 같이 구했었다. static int[] dirX .. 2023. 12. 18.
Effective C# - Item 24 베이스 클래스나 인터페이스에 대해서 제네릭을 특화하지말라 제네릭 클래스나 제네릭 메서드를 작성할 때는 사용자가 가능한 안전하고 혼랍스럽지 않도록 작성해야 한다. 특히 오버로드된 메서드가 여러 개인 경우 컴파일러가 이 중 하나를 어떻게 선택하는지 정확히 알고 있어야 한다. 그리고 사용자가 명시적으로 타입을 설정한 일반 메서드보다 제네릭 메서드가 우선적으로 선택되는 경우에 대해서도 명확히 이해하고 있어야 한다. public class MyBase { } public interface IMessageWriter { void WriteMessage(); } public class MyDerived : MyBase, IMessageWriter { void IMessageWriter.WriteMessage() => Conosle.WriteLine("Inside MyDer.. 2023. 12. 18.
반응형