본문 바로가기
반응형

프로그래밍509

Effective C# Item 13 : 정적 클래스 멤버를 올바르게 초기화하라 정적 클래스 멤버를 올바르게 초기화하라. 정적 멤버 변수를 포함하는 타입이 있다면 인스턴스를 생성하기 전에 반드시 정적 멤버 변수를 초기화해야 한다. 이를 위해 C#에서는 정적 멤버 초기화 구문(static member initializer) 정적 생성자(static constructors) 라는 두 가지 기능을 제공한다. 정적 생성자는 타입 내에 정의된 모든 메서드, 변수, 속성에 최초로 접근하기 전에 자동으로 호출되는 특이한 메서드다. 이 메서드를 활용하면 정적 변수를 초기화하거나, 싱글톤 패턴을 적용하거나, 혹은 여타의 작업을 효과적으로 수행할 수 있다. 정적 변수를 초기화하기 위해서 인스턴스 생성자나 전용의 private:메서드 혹은 다른 관용구를 사용해서는 안된다. 정적 필드를 초기화하는 과정이.. 2023. 10. 27.
[프로그래머스 Programmers] 푸드 파이트 대회 문제 설명 수웅이는 매달 주어진 음식을 빨리 먹는 푸드 파이트 대회를 개최합니다. 이 대회에서 선수들은 1대 1로 대결하며, 매 대결마다 음식의 종류와 양이 바뀝니다. 대결은 준비된 음식들을 일렬로 배치한 뒤, 한 선수는 제일 왼쪽에 있는 음식부터 오른쪽으로, 다른 선수는 제일 오른쪽에 있는 음식부터 왼쪽으로 순서대로 먹는 방식으로 진행됩니다. 중앙에는 물을 배치하고, 물을 먼저 먹는 선수가 승리하게 됩니다. 이때, 대회의 공정성을 위해 두 선수가 먹는 음식의 종류와 양이 같아야 하며, 음식을 먹는 순서도 같아야 합니다. 또한, 이번 대회부터는 칼로리가 낮은 음식을 먼저 먹을 수 있게 배치하여 선수들이 음식을 더 잘 먹을 수 있게 하려고 합니다. 이번 대회를 위해 수웅이는 음식을 주문했는데, 대회의 조건.. 2023. 10. 27.
랜선(LAN Cable, Ethernet Cable)에 대해서 랜선(LAN Cable, Ethernet Cable) 원래 전화선 용도로 쓰이다가 현대에서는 주로 근거리 통신망(Local Area Network)을 구축하기 위해 사용되는 케이블이다. 가장 흔하게는 랜선이라고 불리며 세부 분류인 UTP라는 이름이 익숙하게 알려져 있기도 하다. 랜선의 종류 - 카테고리 CAT, Category 구분법은 간단히 말하면 대역폭(최고 주파수와 최저 주파수의 차이, 1초에 보낼 수 있는 최대 데이터의 크기)으로 UTF Cable을 구분하는 구분법이다. 대역폭에 따라 전송 속도의 차이가 발생해서 같은 시간 동안 전송하는 데이터량이 많고 적음의 차이로 나타나며 일반 가정에서는 주로 10/100 Mbps의 인터넷 속도를 많이 사용한다. 높은 사양의 케이블은 공장이나 사무실 등의 내부.. 2023. 10. 27.
Effective C# Item 8 : 이벤트 호출 시에는 null 조건 연산자를 사용하라. 이벤트 호출 시에는 null 조건 연산자를 사용하라 이벤트를 발생시키는 작업은 간단해 보인다. 이벤트를 정의하고, 이벤트를 발생시켜야 할 경우 이벤트를 호출하기만 하면 이벤트에 결합되어 있는 이벤트 핸들러가 호출될 것이기 때문이다. 멀티캐스트 델리게이트의 경우 이벤트에 결합된 이벤트 핸들러가 여러 개지만 내부적으로 이를 순차적으로 호출해 줄 것이므로 복잡성이 외부로 드러나지 않는다. 하지만 실제로는 이벤트를 호출하는 경우 다양한 문제가 발생하곤 한다. 우선 이벤트에 결합된 이벤트 핸들러가 없다면 어떻게 될까? 이벤트 핸들러가 결합되어 있는지를 확인하는 코드를 추가하면 된다고 생각할지 모르지만, 이벤트 핸들러가 결합되어 있는지 확인하는 코드와 이벤트를 발생시키는 코드 사이에 경쟁 조건(race condit.. 2023. 10. 26.
[프로그래머스 Programmers] 카드 뭉치 문제 설명 코니는 영어 단어가 적힌 카드 뭉치 두 개를 선물로 받았습니다. 코니는 다음과 같은 규칙으로 카드에 적힌 단어들을 사용해 원하는 순서의 단어 배열을 만들 수 있는지 알고 싶습니다. 원하는 카드 뭉치에서 카드를 순서대로 한 장씩 사용합니다. 한 번 사용한 카드는 다시 사용할 수 없습니다. 카드를 사용하지 않고 다음 카드로 넘어갈 수 없습니다. 기존에 주어진 카드 뭉치의 단어 순서는 바꿀 수 없습니다. 예를 들어 첫 번째 카드 뭉치에 순서대로 ["i", "drink", "water"], 두 번째 카드 뭉치에 순서대로 ["want", "to"]가 적혀있을 때 ["i", "want", "to", "drink", "water"] 순서의 단어 배열을 만들려고 한다면 첫 번째 카드 뭉치에서 "i"를 사용한.. 2023. 10. 26.
[프로그래머스 Programmers] 개인정보 수집 유효기간 문제 설명 고객의 약관 동의를 얻어서 수집된 1~n번으로 분류되는 개인정보 n개가 있습니다. 약관 종류는 여러 가지 있으며 각 약관마다 개인정보 보관 유효기간이 정해져 있습니다. 당신은 각 개인정보가 어떤 약관으로 수집됐는지 알고 있습니다. 수집된 개인정보는 유효기간 전까지만 보관 가능하며, 유효기간이 지났다면 반드시 파기해야 합니다. 예를 들어, A라는 약관의 유효기간이 12 달이고, 2021년 1월 5일에 수집된 개인정보가 A약관으로 수집되었다면 해당 개인정보는 2022년 1월 4일까지 보관 가능하며 2022년 1월 5일부터 파기해야 할 개인정보입니다. 당신은 오늘 날짜로 파기해야 할 개인정보 번호들을 구하려 합니다. 모든 달은 28일까지 있다고 가정합니다. 다음은 오늘 날짜가 2022.05.19일 .. 2023. 10. 26.