본문 바로가기
반응형

전체 글553

백준 C# - 2745 +)풀이 풀이 주어진 N이 숫자인지 문자인지 나누어서 자릿수를 계산한다. 01 숫자인 경우 if (char.IsDigit(n[i])) { digit = int.Parse(n[i].ToString()); } 02 문자인 경우 else { digit = (int)n[i] - 55; } 03 현재 자릿수의 지수 계산을 하고 자릿수 값을 곱한다. answer += Math.Pow(b, n.Length - 1 - i) * digit; 예제 GJDGXS 36 정답 1000000000 과정 코드 전문 using System; namespace baek2 { class Program { static void Main(string[] args) { string[] token = Console.ReadLine().Split(); .. 2023. 11. 23.
백준 C# - 11005 +)풀이 풀이 나머지가 9보다 큰 경우와 작은경우를 나누어서 풀면 된다. 01 나머지가 9보다 경우 ASCII값을 사용하여 나머지를 해당 문자로 변환한다. if(n % b > 9) { char a = (char)((n % b) + 55); sb.Insert(0,a); } 02 나머지가 9보다 작은 경우 숫자 그대로 사용하면 된다. else sb.Insert(0,n % b); 03 sb.Inset(0,숫자)를 사용하는 이유 문자열 인덱스0에 해당 숫자를 추가한다는 의미이다. 그러므로 결과를 거꾸로 저장할 수 있다. 예를들어 345를 16진수로 변환한다고 가정해보자 1) 345 % 16 = 21 ... 9 2) 21 % 16 = 1 ... 5 3) 1 % 16 = 0 ... 1 이다. 만약 Insert를 사용하지 않.. 2023. 11. 22.
Effective C# - Item10 베이스 클래스가 업그레이드된 경우에만 new 한정자를 사용하라 베이스 클래스에서 virtual로 선언하지 않은 멤버를 재정의하려는 경우 new 한정자를 사용할 수 있다. 하지만 사용할 수 있다는 것은 전혀 다른 이야기이다. 왜냐하면 virutal로 선언되지 않은 메서드를 재정의하면 메서드의 동작 방식을 모호하게 만들 우려가 있기 때문이다. new한정자를 활용해도 좋은 경우는 베이스 클래스에서 이미 사용하고 있는 메서드를 재정의하여 완전히 새로운 베이스 클래스를 만들어야하는 정도이다. 이미 널리 사용되고있는 메서드가 있어서 이를 사용하는 코드를 일일이 찾아서 수정하기 어렵거나 혹은 외부 어셈블리에서 이 메서드를 사용하고 있어서 코드를 수정할 수 없는 경우라면 new한정자를 사용해볼 만하다. 코드 예시 public class BasePiggy { public void .. 2023. 11. 22.
Effective C# - Item9 박싱과 언박싱을 최소화하 박싱(Boxing) 값 타입의 객체를 타입이 정해져 있지 않은 임의의 참조 타입 내부에 포함시키는 방법이다. 이를 이용하면 참조 타입이 필요한 경우에도 값 타입을 쓸 수 있다. int intValue = 42; object boxedValue = intValue; // 박싱 언박싱(UnBoxing) 박싱되어 있는 참조 타입의 객체로부터 값 타입 객체의 복사본을 가져오는 방법이다. object boxedValue = 42; int intValue = (int)boxedValue; // 언박싱 박싱 언박싱을 수행하는 과정에서 임시 객체가 생성되기도 하는데 간혹 이로 인해 예상치 못한 버그가 발생하기도 한다. 박싱은 값타입을 참조 타입으로 변경한다. 이 과정에서 새롭게 생성된 참조 타입의 객체는 힙에 생성되며.. 2023. 11. 22.
Effective C# - Item 8 이벤트 호출 시에는 null 조건 연산자를 사용하라 이벤트를 호출하는 경우 다양한 문제가 발생할 수 있다. 이벤트를 호출할 때 이벤트 핸들러가 결합되어 있지 않은 경우에 대한 처리는 C# 6.0에서 추가된 null 조건 연산자를 사용하여 간단하게 처리할 수 있다. 이전에는 이벤트 핸들러가 결합되어 있는지 확인하기 위해 직접 null 체크를 하고 호출하는 방식이 많이 사용되었는 이 방식은 두 단계로 이루어져 있기 때문에 경쟁 조건이 발생할 가능성이 있습니다. 코드로 알아보기 01 Null 체크 안하는 경우 public class EventSource { private EventHandler Updated; public void RaiseUpdates() { counter++; Updated(this,counter); } private int counter;.. 2023. 11. 22.
Effective C# - Item7 델리게이트를 이용하여 콜백을 표현하라 콜백(Callback) 동기적인 상황에서 어떤 이벤트나 작업의 완료를 알리거나 처리 결과를 전달하는 방식으로 사용된다. C#에서 콜백은 대부분 델리게이트(delegate)를 사용하여 구현된다. 델리게이트는 메서드에 대한 형식 안전한 참조를 제공하며, 비동기적인 상황에서 콜백을 수행하기 위해 이를 활용할 수 있다. 델리게이트(Delegate) C# 문법 - Delegate(대리자) 1. Delegate 형식은 형식인데, 함수 자체를 넘겨주는 그런 형식! callback 형식 함수 자체를 인자로 넘겨주고 함수를 호출한다. 예시) 사장님(Function)의 비서(Delegate)에게 연락을 요청하지만 받지 않아 code-piggy.tistory.com 콜백과 델리게이트는 C#이 제공하는 관용구의 하나이며 람다.. 2023. 11. 22.
반응형