알고리즘 코드카타 : 정수 내림차순으로 배치하기

내가 생각한 구현 설계 의사코드 :
1. 입력받은수의 각 자릿수를 구하기
2. 해당 자릿수들을 int형 벡터에 삽입
3. 벡터를 내림차순으로 정렬
4. 정렬된 벡터의 앞순서부터 더해서 10곱하기
실제구현 :



테스트 케이스

통과확인
제출 결과 : +2점 코드 확인
잘한점 : sort함수와 자료구조 vector를 떠올려서 해결한점
부족한점 : greater 함수의 존재, 곱셈을 먼저하고 더하면 마지막 자릿수 예외처리 불필요.
UnrealEngine 1-5강 정리노트
Actor의 LifeCycle
언리얼 엔진에있는 모든 객체들은 오브젝트라는 최상위 클래스를 상속받는다.
언리얼 엔진에서 필요한 객체를 생성시 오브젝트 클래스를 상속받는 필요한 기능을 가진 클래스 객체를 생성하게된다.
언리얼 엔진에는 LifeCycle 이라는 생명주기 개념이 존재하는데 대표적으로 6가지가 있다.
1.생성자 constructor
2.postInitializeComponents
3.BeginPlay
4.Tick
5.Destroyed
6.EndPlay
생성자는 c++ 개념에서 배웠던것처럼 객체가 생성될때 딱 한번 호출되는 함수이다.PostInitializeComponents 함수는 언리얼에서 제공되는 함수로 객체의 모든 컴포넌트가 준비된 상태 이후 호출되는 함수이다 해당 함수에서는 컴포넌트 끼리 주고받을 데이터가 필요한경우 처리를 해줄 수있다.BeginPlay는 프로젝트가 시작할때 호출되는 함수이다. 프로젝트가 시작할때가되면 필요한 다른모듈의 객체들도 생성이 되어있는 상태이므로 상황에 맞는 정보처리를 해줄 수 있다.Tick는 프로젝트가 시작한 이후 1프레임마다 호출되는 함수이다. 해당함수에서는 진행에 필요한 부드러운 움직임이나 지속적으로 필요한 작업을 처리해 줄 수 있는데 매프레임마다 호출되기때문에 사용시 주의가 필요하다.Destroyed 생성된 객체가 파괴되기 직전에 호출되는 함수이다. 해당 함수에서는 객체의 파괴 이펙트나 사운드 처리를 해줄 수 있다.EndPlay는 Destroyed함수가 호출된 다음에 즉시 호출되는 함수이다. 단, 예외적으로 프로그램을 강제종료했을때 EndPlay 함수가 호출되게끔 언리얼 엔진에는 설계되어있다. 즉, 객체를 파괴할경우 Destroyed 와 Endplay가 호출되고 프로젝트를 바로 종료할경우 EndPlay만 호출되는 차이점이 있다.해당 함수들을 LifeCycle 라고 하는데 각각 상황에맞게 사용할 경우 여러가지 정보처리나 데이터처리등 오브젝트를 체계적으로 관리하는데에 도움이된다.
UnrealEngine 1-6강 정리노트
TransForm과 Tick함수
TransForm : 언리얼에서 물체의 움직임에 필요한 요소들을 모아놓은 명칭
Location 이동 : 물체의 이동좌표Rotation 회전 : 물체의 회전Scale 크기 : 물체의 크기Tick : 매 프레임마다 호출되는 함수로 인자로 DeltaTime 을 가지고있다.
DeltaTime : Tick함수가 매 프레임마다 호출되는데 각 환경마다 프레임이 다를 수 있다.Tick 내부에서 처리하는 회전이나 지속적인 움직임에 곱하게 되면 똑같은 평균값을 가지게 되는 구조이다.학습 예시 코드 :

시작할때 BeginPlay함수에 상태가 변화된 후 시간이 흐를때마다 지속적으로 Tick 함수에 의해 상태가 변화한다. 이때, Tick 함수는 지속적으로 호출되는 함수기 때문에 성능적으로 작업을 최소화 해야한다 때문에 if() 조건식으로 물체의 회전속도가 존재할때만 회전을 하게끔 설정해주어야하는데, 이때 float값은 부동소수점을 나타냄으로 0.0f 로 조건을 정하게 될경우 미세한 값의 차이때문에 계속 작업이 일어나게된다. 그것을 고려하여 언리얼엔진에서 제공하는 FMath::IsNearlyZero 구조체를 이용하게되면 0과의 근접한 모든 값을 0으로 처리해준다. 이코드를 이용하여 작업을 효율적으로 처리할 수 있다.
+ 언리얼에서 제공하는 FRotator 을 사용할경우 짐벌락 문제가 발생 할 수 있음 해당 문제가 발생하는 개념과 해결방법은 궁금하면 직접 찾아보기
키워드
짐벌락, 오일러각, 쿼터니언UnrealEngine 1-7강
클래스와 리플렉션 시스템
리플렉션 시스템 : 블루프린트와 c++를 서로 연동하여 작업을 할 수 있도록 도와주는 시스템
블루프린트 와 C++ 의 차이
블루프린트
장점 :
단점 :
디자이너나 빠른작업을 위한 툴
UI,시네마틱,프로토타이핑,애니메이션 사용
C++
장점 :
단점 :
실제현업에서는 블루프린트 C++ 모두 사용
리플렉션 시스템
Generated 헤더파일 : 리플렉션 시스템을 지원하는데 가장필수적인 헤더파일, 언리얼엔진에서 자동생성, 항상 참조되는 헤더파일중에서 가장 밑에 있어야한다.
UCLASS : 클래스를 리플렉션에 등록시켜주는 매크로
GENERATED_BODY : 리플렉션에 등록하기위한 여러가지 코드들을 담은 매크로 UCLASS 와 세트
UPROPERTY : C++ 에서 구현한 변수들을 리플렉션 시스템에 등록하는 매크로.
UFUNCTION : C++ 에서 구현한 함수들을 리플렉션 시스템에 등록하는 매크로.
리플렉션 시스템에 인자를 전달하여 C++ 과 블루프린트 를 오가며 작업을 할 수 있게 커스터마이징이 가능하다.
전체 구현부 코드
