비트를 쪼개는 개발자

allen321@naver.com

2024/08 10

C# [프로그래머스] Lv.2 의상

문제 설명 1. yellow_hat2. blue_sunglasses3. green_turban4. yellow_hat + blue_sunglasses5. green_turban + blue_sunglasses 각 입을 수 있는 의상들을 종류별로 입는 경우의 수를 모두 계산하고 최종적으로 몇개의 조합으로 옷을 입을 수 있는지 계산하는 문제이다. 우선 각 의상의 종류별로 몇개의 종류가 있는지 넣어줄 딕셔너리를 선언하고 string 배열에서 받아온 옷의 갯수 만큼 계산하는 for문을 돌려준다. 이후에는 각 Dictionary 의 key값 만큼 곱해주면 간단하게 경우의 수가 나온다.최소한 하나의 옷은 입는다는 전제조건이 있었기 때문에 최종적으로 나온 answer에 -1을 해주면 해결 된다.   해당 코드  us..

코딩테스트 2024.08.27

C# - 이벤트(Event) / 델리게이트와 이벤트의 차이점

이벤트(Event)란?  이벤트는 객체 또는 클래스에서 특정 상황이 발생하거나 상황을 발생시켰을때 알림을 받기 위해 사용되는 메커니즘이다. 특정한 조건이 충족되면 이벤트가 호출되며 버튼 클릭, 마우스 이동이나 키보드 입력 등 다양한 작업을 수행하다가 발생하는 이벤트를 처리하기 위해 사용된다. 이벤트는 기본적으로 델리게이트를 기반으로 작동하며 이벤트를 정의할 때에는 해당 이벤트를 처리할 델리게이트 형식을 정의해야 한다. 이벤트는 상호 참조를 막기 위해 대입 연산자를 사용할 수 없고, 증감 연산자만 사용할 수 있다.(+=, -=) 이벤트는 객체 간 느슨한 결합을 유지하면서 상호 작용을 유지하며 하나의 이벤트에 여러 응답을 지정해 확장성이 뛰어나다. 이벤트의 사용법은?  우선 이벤트를 사용하려면 두 역할을 수..

C# 2024.08.21

C# - 델리게이트(Delagate)

델리게이트(Delegate) 란 ?   델리게이트라는 단어는 대리자, 대표자라는 뜻을 가진 단어다.  C#에서는 함수를 참조할때 사용하는데 함수를 참조 한다는 것은 함수의 주소 값을 저장하고 이 주소 값을 이용해서 해당 함수를 호출한다는 의미이다. 즉 C++에서 함수 포인터를 사용해 함수를 호출하는것과 유사한 개념이다.  델리게이트를 사용하면 메서드를 변수처럼 저장하고, 이를 통해 메서드를 실행하거나 다른 메서드에 전달할 수 있으며 심화 과정으로는 이벤트 처리, 콜백 메서드, 멀티캐스팅(여러 메서드를 호출하는 기능)등도 수행할 수 있다.   델리게이트를 정의하는 법  델리게이트는 위에서 말한것 처럼 함수를 참조하는 형태로 정의해야 한다. 즉 함수에서 사용하는 형식과 매개변수를 똑같이 참조해 주어야 한다는..

C# 2024.08.15

통신 - DNS

DNS(Domain Name System) 란? DNS는 인터넷에서 사용하는 전화번호부와 비슷한 개념이다.사용자가 입력하는 웹 주소(www.naver.com)를 도메인은 숫자 IP 주소로 변환하여 원하는 주소로 연결시켜 준다.DNS는 여러 과정을 거쳐 단계별로 웹 주소를 IP 주소로 반환한다.DNS 상위 기관은 인증된 기관에게 도메인 주소를 생성, 변경하거나 IP 주소로 변경이 가능한 권한을 부여해준다.위와 같은 계층형 구조를 가지며 분산 데이터베이스 구조를 가지는것이 DNS의 특징이다.    DNS의 구성 요소  1. 도메인 네임 스페이스 도메인 네임 스페이스(Domain Name Space)는 인터넷에서 수많은 도메인 이름이라는 데이터를 체계적으로 구성한 계층 구조이다.도메인 이름이라는 데이터를 찾기..

통신 2024.08.13

C# [프로그래머스] Lv.2 두 큐 합 같게 만들기

문제 설명   queue1 = [3, 2, 7, 2]queue2 = [4, 6, 5, 1] 문제에서 넘겨주는 queue는 배열로 이루어져 있지만 제일 앞에 있는 배열 원소가 첫번째로 빠져나와야 하는 queue의 원소로 가정해서 풀어야 한다. 위와 같이 두개의 큐를 넘겨주고 모든 큐의 합을 더한 뒤 2로 나눈 값이 각각의 큐의 합이 되도록 만들어야 한다. 즉 위의 queue1 의 총 합은 14이고 queue2의 총 합은 16이다. 둘을 합하면 30이고 각 큐의 원소의 합이 15가 되게 만들어야 하기 때문에 queue1의 원소와 queue2 원소를 Enqueue하고 Dequeue 해가며 작업한다. 이때 return값은 제일 적은 경우로 작업한 횟수를 넘겨주면 되고 불가능 할 경우 -1을 return하면 된다..

코딩테스트 2024.08.09

Unity [디자인 패턴] - 싱글톤 패턴

싱글톤 패턴이란?  싱글톤 패턴은 특정 클래스의 인스턴스가 프로그램 전체에서 오직 하나만 존재하도록 만드는 디자인 패턴이다. 해당 인스턴스를 호출하면 매번 새로운 인스턴스를 생성하는 것이 아니라 기존에 생성한 인스턴스를 반환한다. 기존의 인스턴스를 재사용하기 때문에 메모리를 절약할 수 있지만 너무 많은 인스턴스를 싱글톤으로 만들면 스태틱 메모리에 너무 많은 인스턴스가 할당되어 있게 된다. Singleton 객체에는 어디서나 static 변수로 참조값을 할당해서 모든 객체에서 쉽게 접근이 가능하도록 구현한다. 씬과 씬 사이에 데이터를 공유하는 용도로도 사용함(DontDestroyOnLoad 함수 사용)    싱글톤이 필요한 경우   1. 많은 클래스에서 해당 클래스를 수시로 공유하는 경우   유니티에서는 ..

Unity 2024.08.07

Unity [디자인 패턴] - 디자인 패턴이란?

디자인 패턴(Design Pattern) 이란?   디자인 패턴은 특정 기능을 구현하기 위한 접근 방식이나 코드의 구조를 정의한 개념이다. 코딩 테스트를 풀다 보면 다양한 알고리즘을 이용해서 문제를 해결하는데, 알고리즘이 해답을 얻기 위한 효율적인 풀이 과정을 의미한다면 디자인 패턴은 과정 보다는 효율적인 구조 자체를 뜻한다. 디자인 패턴을 이용하면 코드의 재사용성이 높아지는 것 역시 디자인 패턴의 장점이다. 좋은 소프트웨어 구조를 설계할 때 중요한 모듈화와 추상화 역시 디자인 패턴을 통해 쉽게 구현할 수 있다. 디자인 패턴이 필요한 순간은?  유니티에서 디자인 패턴을 이용하는 경우는 크게 다음과 같다.  메모리 사용을 최소화 해야 하는 경우, 게임 성능 최적화가 필요한 경우게임 출시 이후 컨텐츠 추가와..

Unity 2024.08.07

C# [프로그래머스] Lv.2 택배 상자

문제 설명  컨베이어 벨트에서 택배를 확인하고 트럭에 순서대로 싣는 문제다. 고려해야 할 점은 택배는 반드시 기사님이 알려준 순서대로, 즉 order와 같은 순서로 트럭에 올라가야 한다. order[] 배열은 컨베이어 벨트에서 몰려오는 택배의 순서이고 해당 택배를 트럭에 싣는게 불가능 하다면 보조 컨테이너를 이용해서 잠시 배치할수 있다. 보조 컨테이너는 입구 이외에는 다른 면이 모두 막혀있는 구조이기 때문에 가장 마지막에 보관한 상자부터 꺼낼 수 있다. 이러한 상황에서 몰려오는 택배 상자를 최대 몇개까지 트럭에 넣을 수 있는지를 구하는것이 이번 문제의 답이다.     풀이 과정 우선 택배 상자를 순서대로 확인하는 작업을 하는 반복문을 만들었다.반복문의 과정 중 i번째의 상자가 트럭에 바로 넣을 수 없는 ..

코딩테스트 2024.08.06