비트를 쪼개는 개발자

allen321@naver.com

2024/10 6

C# - 이터레이터(Iterator) [반복자]

이터레이터(Iterator)란?  Iteration라는 단어는 반복이라는 의미를 가진다. C#에서 이를 Iterator를 사용한다는 것은 프로그램안에서 특정 동작이나 행위를 반복시키고 싶을때 사용한다. C#에서는 이 Iterator를 IEnumerator라는 인터페이스를 사용해서 나타내고 이를 열거자 라고 지칭한다. Iterator는 다음과 같은 특징을 가진다.  Iterator의 특징순차적 접근:이터레이터는 컬렉션 내의 요소를 순서대로 하나씩 접근할 수 있게 도와준다. 첫 번째 요소부터 시작해 마지막 요소까지 순차적으로 요소에 접근할 수 있다.상태 관리:IEnumerator 인터페이스는 Current, MoveNext, Reset 메서드를 통해 현재 요소의 상태를 유지하고, 다음 요소로 이동하거나 컬렉..

C# 2024.10.29

C# [디자인 패턴] - 팩토리 패턴(Factory Pattern)

팩토리 패턴(Factory Pattern)이란? 팩토리 패턴(Factory Pattern)은 객체 생성 로직을 클라이언트 코드와 분리하여 객체 생성을 관리하는 디자인 패턴이다.객체 생성 로직을 별도의 클래스나 메서드로 분리하여, 클라이언트 코드가 직접 객체를 생성하지 않고 팩토리를 통해 객체를 생성하도록 한다.팩토리 메서드만 수정하면 객체 생성 방식을 변경할 수 있으므로, 코드 수정이 유연해진다.팩토리 패턴은 크게 두가지로 분류된다. ("팩토리 메서드 패턴"과 "추상 팩토리 패턴")   팩토리 매서드 패턴     팩토리 매서드 패턴은 객체를 생성하는 메서드를 캡슐화하여 서브클래스에서 구체적인 생성 방식을 정의하게 한다.객체 생성을 일종의 공장(팩토리) 클래스로 생성을 전담시키고 나머지 자세한 부분은 서브..

C# 2024.10.24

C# [디자인 패턴] - 상태 패턴(State Pattern)

상태 패턴이란? 상태 패턴(State Pattern)은 객체의 상태에 따라 그 객체의 행동이 변경되도록 하는 디자인 패턴이다.상태 패턴은 객체의 상태가 변화할 때, 해당 상태에 따른 로직을 별도의 상태 클래스들로 분리하여 구현한다.객체의 상태와 관련된 코드가 분리되기 때문에 상태 전환을 쉽게 관리할 수 있게 된다.객체 지향 설계 원칙인 변화 부분을 "캡슐화" 할 수 있고 이를 통해 코드의 확장성이 용이해진다.   상태 패턴의 구성 요소는?상태 패턴은 크게 Context(시스템, 주체), State(상태, 인터페이스), ConcreteState(구체적 상태)로 구성된다.    1. Context 상태를 관리하는 객체로, 현재 상태에 따라 동작을 위임하는 역할을 수행한다상태 패턴의 사용자 측에서 사용할 주요..

C# 2024.10.22

C# [HackerRank] Algorithm(Data Structures) - Equal Stacks

문제      문제 설명 스택과 유사한 구조로 만들어전 3개의 실린더가 있다. 각각의 실린더의 높이는 제각각인데 실린더의 요소로 구성된 숫자를 하나씩 제거하면서 3개의 실린더 높이를 동일하게 만드는 것이 최종 목표이다. 실린더는 아래의 그림과 같은 형태로 구성되고 맨 위에 위치하는 숫자에 해당하는 요소를 삭제해 가며 최종적으로는 같아진 높이의 값을 return 하면 되는 문제다.      최종적으로 같아진 높이는 5 이므로 5를 return 해주면 되는 문제다.    풀이 방법  먼저 각각의 실린더는 스택과 같은 구조로 이루어져있다. 함수에서 넘겨받는 매개 변수가 List로 이루어져 있기 때문에 각각의 리스트의 요소들을 먼저 스택에 담아주었다. 담는 과정에서 리스트를 그대로 담으면 스택의 특성 상 리스트..

코딩테스트 2024.10.14

C# [디자인 패턴] - 옵저버 패턴(Observer Pattern)

옵저버 패턴(Observer Pattern)이란?  옵저버 패턴(Observer Pattern)은 객체 간의 일대다 관계를 정의하여, 하나의 객체(주체, Subject)의 상태가 변경될 때, 이 상태를 관찰하는 여러 객체(옵저버, Observer)들에게 자동으로 알림을 보내는 디자인 패턴이다.  Observer Pattern은 크게 Subject(주체) 파트와 Observer(관찰자) 파트로 구성된다,Subject(주체): 상태를 관리하며, 상태 변화 시 옵저버들에게 알림을 보내는 역할을 수행한다.Observer(옵저버): 주체의 상태 변화를 관찰하며, 변경 사항을 수신하는 역할을 수행한다.객체 간의 느슨한 결합을 유지하면서도 효율적으로 상태 변화를 처리할 수 있는 디자인 패턴이다.유니티 엔진의 Unit..

C# 2024.10.04

알고리즘 - 투 포인터(Two Pointer) / 슬라이딩 윈도우(Sliding Window)

투 포인터란?  투 포인터 알고리즘은 배열이나 리스트에서 사용할 수 있는 탐색 기법이다.주로 정렬된 배열이나 리스트에서 연속적인 구간에서 합이나 원소를 찾아내는데 아주 유용한 알고리즘이다.특정한 두 원소의 합을 구한다고 가정하면 완전 탐색의 경우에는 O(n2)의 시간 복잡도가 발생하지만 투 포인터로 이를 해결하면 O(n)의 시간 복잡도가 발생한다. 투 포인터의 기본 개념 투 포인터는 제목과 비슷하게 배열의 양 끝에 두개의 포인터를 이용하는 기법이다.좌우 의 포인터는 양 끝에서 시작해서 특정 원소를 찾을때 까지 가운데로 이동하며 진행한다.배열이나 리스트의 요소가 정렬 되어 있어야 사용이 가능하다. 투 포인터 사용 예시 배열의 여러 숫자 원소가 담겨있고 해당 원소 중 두 수의 합과 특정한 숫자가 일치하는 경..

알고리즘 2024.10.01