[Algorithm] 전위 연산자 vs 후위 연산자
·
알고리즘(Algorithm)
1. 개요최근 코딩 테스트 준비를 하면서 문제를 푼 다음에는 한번씩 다른 사람들은 어떤 식으로 코드를 작성했는지 확인해 보고 있다. 그런데 나는 for문의 증감 연산자를 사용할 때 후위 연산자를 주로 사용하는 편인데, 코드를 좀 깔끔하게 작성했다 싶은 사람들은 for문 안의 증감 연산자로 전위 연산자를 사용하는 경우가 많아서 이게 특별한 이유가 있는 것인지 의문이 가서 이에 대해 알아 보았다.2. 차이결론부터 얘기하자면 전위 연산자가 후위 연산자보다 조금 더 효율적이라고 한다. 이유에 대해 자세히 알아보기 위해 작동 방식을 나타낸 코드와 함께 알아보겠다.1. 전위 연산자i=i+1; // i의 값을 1만큼 증가시켜 저장return i; // 1만큼 증가된 i값을 반환전위 연산자의 작동 방식은 위의 간단한 ..
[UE] 언리얼 엔진 코딩 컨벤션(Coding Convention)
·
언리얼엔진(UE)
코딩 컨벤션(Coding Convention)유지보수하기 쉬운 코드를 작성하기 위한 일종의 코딩 스타일 규약실제로 프로젝트를 진행할 때, 코드 작성은 항상 다른 사람과의 협업을 베이스로 생각해서 작성해야 한다. 특히 이번에 소규모 팀프로젝트를 진행하는 과정에서 코딩 컨벤션을 정하지 않으면 발생할 수 있는 문제나 에로사항들을 겪고 보니 기업에서 대규모의 팀단위로 이루어지는 프로젝트에서는 문제가 정말 크겠다는 생각이 들었다. 이런 협업이라는 특성 때문에 우리는 코딩 컨벤션이라는 표준 및 모범 사례를 준수할 수 있도록 프로젝트나 산업 내에서 정해진 코딩 스타일 규약을 따르는 것이 좋다. 이러한 코딩 컨벤션의 필요성 때문에 언리얼 엔진 공식 문서에서 제공하는 코딩 표준에 대해 알아봤다.코딩 컨벤션의 필요성소프트..
[UE] 언리얼 엔진 C++ 개발 환경 셋업
·
언리얼엔진(UE)
1. 언리얼 엔진 셋업언리얼 엔진 5 설치 및 버전 확인5.5.x 버전 C++ 빌드 에러 예방2024년 12월 기준 발생하는 에러 ㅡ> 엔진이 설치된 폴더(ex: C:\Program Files\Epic Games\UE_5.5)의 "읽기 전용" 속성 해제ㅡ> 엔진 빌드 과정에서 엔진 내부 파일을 임시로 수정하거나 접근할 수 있기 때문에 "읽기 전용"을 해제2. Visual Studio 셋업Visual Studio Installer 실행설치된 Visual Studio 목록에 Visual Studio 2022 Community 유무 확인 ㅡ> 없다면 설치 (https://visualstudio.microsoft.com/)버전 17.8 이상으로 맞추기워크로드 확인 및 추가 설치Visual Studio Commu..
[OOP] 추상 팩토리 패턴(Abstract Factory Pattern)
·
OOP
추상 팩토리 패턴(Abstract Factory Pattern)연관성이 있는 제품군(객체 집합)이 여러개 있을 경우 이들을 묶어 추상화하고, 팩토리 클래스에서 집합으로 묶인 제품군을 생성하는 생성 패턴의 일종ㅡ> 복잡하게 분류되는 제품군들을 관리하고 확장하는데 용이ex) 갤럭시 스마트폰 + 갤럭시 탭 + 갤럭시 워치 vs. 아이폰 + 아이패드 + 애플 워치 와 같은 제품군을 생성 가능추상 팩토리 패턴 구조AbstractFactory : 최상위 공장 클래스. 인터페이스에 해당하며 여러개의 제품들을 생성하는 여러 메소드들을 추상화ConcreteFactory : 서브 공장 클래스. 타입에 맞는 제품을 반환하도록 메소드들을 재정의AbstractProduct : 각 타입의 제품들을 추상화한 인터페이스Concret..
[OOP] 팩토리 메서드 패턴(Factory Method Pattern)
·
OOP
팩토리 메서드 패턴(Factory Method Pattern)객체 생성을 공장(Factory) 클래스로 캡슐화 처리하여 대신 생성하게 하는 생성 디자인 패턴ㅡ> 클라이언트에서 직접 new 연산자로 객체를 생성하지 않고, 제품 객체의 생성을 도맡아 하는 공장 클래스를 만들고 이를 상속하는 서브 공장 클래스의 메서드에서는 여러가지 제품 객체 생성을 각각 책임지는 형태+ 객체 생성에 필요한 과정을 템플릿처럼 미리 구성해놓고 객체 생성에 관한 전처리, 후처리를 통해 생성 과정을 다양하게 처리해 객체를 유연하게 결정할 수 있음ㅡ> 객체간의 결합도를 낮춰 유지보수의 효율성 향상팩토리 메서드 패턴 구조 Dialog : 최상위 공장 클래스 ㅡ> 팩토리 메서드를 추상화하여 서브 클래스에서 객체를 생성하도록 함객체 생성 ..
[회고록] KPT 회고란?
·
기타
KPT 회고란?회고 방법론의 일종으로 Keep, Problem, Try의 약자로 3가지 단어를 기준으로 하여 회고를 진행하는 방법Keep현재 만족하고 있는 부분계속 이어갔으면 하는 부분Problem불편하다 느낀 부분개선이 필요하다 생각되는 부분TryProblem에 대한 해결책다음 회고 때 판별 가능한 것당장 실행 가능한 것KPT 회고가 필요한 상황 (주관적)팀분업이 이루어 지고 있는 상황ㅡ> 분업으로 인해 팀원들이 서로의 애로사항을 공유하지 못할 수 있음. 다양한 분야의 전문가들이 함께 일하는 경우에는 더욱이 서로의 애로사항을 공유하는 것이 중요함프로젝트 진행 상황이 더딜 때ㅡ> 프로젝트의 진행 상황이 더디다면 어딘가 문제가 있을 확률이 높으니 회고를 통해 팀 내의 문제점을 짚어 보는 것이 효과적일 수 ..
[OOP] 싱글톤 패턴(Singleton Pattern)
·
OOP
싱글톤 패턴싱글톤 패턴을 따르는 클래스는 클래스에서 생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 단 하나이고, 최초 생성 이후 호출된 생성자는 최초의 생성자가 생성한 객체를 반환주로 프로그램 내에서 하나만 생성해 공유해야 하는 객체가 존재할 때 사용싱글톤 패턴의 장점메모리 사용 : 한개의 인스턴스만 고정 메모리 영역에 생성 ㅡ> 추후 해당 객체 접근 시 메모리 낭비 방지속도 : 이미 생성된 인스턴스를 사용 ㅡ>  속도가 빠름데이터 공유 : 전역으로 사용되는 인스턴스 ㅡ> 여러 클래스에서 데이터 공유 가능 ㅡ> But, 동시성 문제 유의싱글톤 패턴 코드싱글 캐릭터 게임#include using namespace std;class Character {private: static Charact..
[C++] STL(Standard Template Library)
·
C++
STLC++에서 제공하는 표준 라이브러리로, 데이터를 효율적으로 저장하고 조작할 수 있도록 설계된 도구 모음STL의 주요 특징일관성 : 다양한 컨테이너에 동일한 문법으로 접근 가능(반복자, 알고리즘 덕분)효율성 : 최적화된 자료구조와 알고리즘 제공유연성 : 다양한 데이터 타입과 상황에 맞게 사용할 수 있는 템플릿 기반 설계STL의 세 가지 주요 구성 요소컨테이너(Container) : 데이터를 저장하는 자료구조알고리즘(Algorithm) : 데이터를 조작하는 함수들반복자(Iterator) : 컨테이너와 알고리즘을 연결하는 다리 역할STL  분류1. 컨테이너데이터를 저장하는 다양한 자료구조 제공 순차 컨테이너 : 원소를 순차적으로 저장하며 크기가 동적으로 조절됨 ㅡ> 사용처 : 데이터의 순차적 접근 및 관..
[OOP] 디자인 패턴(Design Pattern)
·
OOP
디자인 패턴개발 시 반복적으로 등장하는 문제를 해결하기 위한 일반화 된 솔루션객체 지향 4대 특성(캡슐화, 상속, 추상화, 다형성)과 SOLID원칙을 기반으로 구현* 장점 : 코드 유지보수 효율성 향상디자인 패턴 분류생성 패턴(Creational Patterns) : 새로운 것을 만들어내는 방법과 관련된 패턴구조 패턴(Structual Patterns) : 여러 부품을 어떻게 조립하고 연결하는지에 대한 패턴행동 패턴(Behavioral Patterns) : 부품이 서로 어떻게 상호작용하는지에 대한 패턴생성 패턴싱글톤(Singleton) : 하나의 클래스 인스턴스를 전역에서 접근 가능하게 하여 해당 인스턴스가 단 한번 생성되도록 보장하는 패턴팩토리 메서드(Factory Method) : 객체를 생성하기 위..
[OOP] 객체 지향 설계 5원칙(SOLID) : DIP(Dependency Inversion Principle)-의존 역전 원칙
·
OOP
DIP(Dependency Inversion Principle)고수준 모듈은 저수준 모듈에 의존하지 않고 둘다 추상화에 의존해야 한다는 원칙고수준 모듈 : 다른 클래스나 모듈을 사용하는 사용자 역할저수준 모듈 : 구체적인 작업을 처리하는 세부사항이 담긴 클래스이전 ISP(인터페이스 분리 원칙)에서 다루었던 것과 비슷하게 고수준 모듈이 저수준 모듈에 의존하지 않도록 추상화(인터페이스화)에 의존하도록 설계를 해야 한다는 말이다.코드 예제DIP가 적용되지 않은 코드#include using namespace std;class Monitor{public: void display(const string& data) { //출력 }};class Keyboard{public: string GetIn..

.menu_toolbar { display: none !important; }