전체 글

개발 내용과 지식을 정리한 블로그입니다.
· 언리얼
언리얼 엔진의 블루프린트 시스템은 시각적 스크립팅과 전통적인 코딩을 독특하게 혼합한 놀라운 도구다. 블루프린트의 작동 방식을 이해하려면 코드를 작성하지 않고도 복잡한 게임 로직을 구축할 수 있는 시각적 인터페이스라고 상상해 보라. 이 시스템은 시각적 스크립팅의 유연성과 기존 프로그래밍의 기능을 결합하므로 C++로 작성된 메서드와 통합할 때 특히 유리하다. 예시 슈팅 게임에서 C++와 블루프린트 통합 총을 쏘고 적에게 피해를 주는 것과 같은 핵심 기능을 처리하기 위해 C++로 작성된 메서드가 있는 슈팅 게임 시나리오를 고려해 보자. 이러한 메서드는 게임 로직의 중추를 형성한다. C++ ShootGun Method 이 메소드은 총 발사 메커니즘을 처리한다. 여기에는 탄약 사용, 반동, 총이 현재 발사 가능한..
방문자 패턴 객체의 구조와 객체에 수행되는 작업을 분리한다. 기존 클래스를 변경하지 않고도 새로운 작업을 정의할 수 있게 한다. 구조 Visitor - 방문자 클래스들이 구현해야 할 인터페이스. 각 구체적인 요소 클래스(Element)를 방문(visit)하는 메소드를 선언한다. Concrete Visitor - Visitor 인터페이스를 구현하는 클래스. 구체적인 요소(Element)들에 대한 방문 동작을 구현한다. 각 요소에 대해 수행할 작업을 정의한다. Element - 요소 클래스들이 구현해야 할 인터페이스. 이 인터페이스는 Accept 메소드를 선언하여, 방문자 객체가 요소 객체를 방문할 수 있게 한다. Concrete Element - Element 인터페이스를 구현하는 클래스. 실제 데이터와 ..
템플릿 메소드 패턴 알고리즘의 골격을 정의한 메소드를 제공하고, 일부 단계를 서브클래스에서 구현하게 함으로써, 구조를 유지하면서도 특정 부분의 변경을 가능하게 하는 디자인 패턴. 구조 AbstractClass - 서브클래스들이 재정의를 통해 구현해야 하는 알고리즘 처리 단계의 기본 연산(골격)을 정의한다. 그리고 알고리즘의 뼈대를 정의하는 템플릿 메서드를 구현한다. ConcreteClass - 서브클래스마다 달라진 알고리즘 처리 단계를 수행하기 위한 기본 연산을 구현한다. 기본 인터페이스 // 추상 기본 클래스 public abstract class AbstractClass { // 템플릿 메소드 public void TemplateMethod() { BaseOperation(); // 기본 작업 ..
전략 패턴 여러 알고리즘을 캡슐화하고 상호 교환 가능하게 만드는 패턴. 알고리즘을 사용하는 클라이언트와 상관 없이 독립적으로 알고리즘을 다양하게 변경할 수 있다. 구조 Strategy - 제공하는 모든 알고리즘에 대한 공통 연산들을 인터페이스로 정의한다. Context 클래스는 ConcreteStrategy 클래스에서 정의한 인터페이스를 통해 실제 알고리즘을 사용한다. ConcreteStrategy - Strategy의 인터페이스를 실제 알고리즘으로 구현한다. Context - ConcreteStrategy 객체를 통해 구성된다. Strategy 객체에 대한 참조를 관리하고, 실제로는 Strategy 서브클래스(ConcreteStrategy)의 인스턴스를 갖고 있음으로써 구체화한다. 또한 St..
옵저버 패턴 객체를 가볍게 만들어 메모리 사용량을 줄이는 패턴. 자주 변하는 속성과 불변 속성을 분리하고 불변 속성을 재사용함으로써 메모리 사용량을 줄일 수 있다. 구조 Subject - Observer(감시자)를 을 알고 있는 구독자. 임의의 개수의 감시자 객체는 Subject를 감시한다. Subject의 상태가 변경되면 Observer에게 알림을 보낸다. Observer - Subject의 상태 변화를 갱신하는 데 필요한 인터페이스를 정의한다. Subject의 변경에 따라 변화되어야 하는 객체들의 일관성이 유지된다. ConcreteSubject - ConcreteObserver 객체에게 알려주어야 하는 상태를 저장한다. 상태가 변경되면 해당 ConcreteObserver에 변경을 통보한다. Con..
상태 패턴 객체 내부 상태 변경에 따라 객체의 행동이 달라지는 패턴. 상태에 특화된 행동들을 분리해 낼 수 있으며, 새로운 행동을 추가하더라도 다른 행동에 영향을 주지 않는다. 구조 Context - 사용자가 관심 있는 인터페이스를 정의한다. 객체의 현재 상태를 정의한 ConcreteState 클래스 객체를 유지 및 관리한다. State - Context의 각 상태별로 필요한 핸동을 캡슐화하여 인터페이스로 정의한다. ConcreteState 클래스들 - 각 서브클래스들은 Context의 상태에 따라 처리되어야 할 실제 행동을 구혀한다. 기본 인터페이스 public interface IState { void Handle(Context context); } public class ConcreteSta..
메멘토 패턴 객체의 상태를 이전의 상태로 복원할 수 있는 방법을 제공하는 디자인 패턴. 객체의 상태를 캡처하고 필요할 때 그 상태를 복원하는 기능을 통해, 객체의 내부 상태에 대한 직접적인 접근을 피하면서도 상태 정보를 외부에 저장하고 관리할 수 있다. 구조 Memento - 객체의 내부 상태를 저장하는 클래스. 객체의 상태를 저장하거나 복원하기 위해 사용된다. Originator - 원조 객체. 메멘토를 생성하여 현재 객체의상태를 저장하고, 메멘토를 사용하여 내부 상태를 복원한다. Caretaker - 메멘토의 보관을 책임지는 클래스. 메멘토의 내부 상태를 읽거나 접근하지 못하고 단지 보관만 한다. 기본 인터페이스 public class Memento { public string State { ge..
문제 링크 성능 요약 메모리: 4.14 MB, 시간: 0.03 ms 문제 설명 수학에서 칸토어 집합은 0과 1 사이의 실수로 이루어진 집합으로, [0, 1]부터 시작하여 각 구간을 3등분하여 가운데 구간을 반복적으로 제외하는 방식으로 만들어집니다. 남아는 칸토어 집합을 조금 변형하여 유사 칸토어 비트열을 만들었습니다. 유사 칸토어 비트열은 다음과 같이 정의됩니다. 0 번째 유사 칸토어 비트열은 "1" 입니다. n(1 ≤ n) 번째 유사 칸토어 비트열은 n - 1 번째 유사 칸토어 비트열에서의 1을 11011로 치환하고 0을 00000로 치환하여 만듭니다. 남아는 n 번째 유사 칸토어 비트열에서 특정 구간 내의 1의 개수가 몇 개인지 궁금해졌습니다. n과 1의 개수가 몇 개인지 알고 싶은 구간을 나타내는 ..
NewtronVania
Newtron의 프로그래밍 블로그