hljs.initHighlightingOnLoad();

전체 글

알고리즘

[C++] Boj 15665 N과 M (11)

문제 링크15665 N과 M (11)풀이N개의 수 중 M개를 뽑아 수열을 사전순 증가로 출력하는 문제이다.이때, 수는 중복해서 뽑아도 되지만, 중복되는 수열은 만들면 안 된다.  예N개의 수가 [1 ,7, 9(A), 9(B)]일 때.(1, 1), (9(A), 9(A)) ------> 가능 But (9(A), 9(A))가 먼저 뽑혔으므로 (9(A), 9(B))는 불가능.(1, 7), (7, 1)  -------------> 가능(1, 9(A)), (1, 9(B))  -----> 불가능 따라서 N과 M(9) 문제 풀이에서, 중복된 수를 허용하는 부분만 추가해 주면 되기 때문에 isUsed 배열과 조건문을 삭제하여 해결하였다.코드#include #include using namespace std;// N개 중..

알고리즘

[C++] Boj 15664 N과 M(10)

문제 링크15664 N과 M (10) 접근N개의 자연수 중, M개의 수를 뽑아 비내림차 수열을 만드는 문제이다.이때 N개의 자연수는 (4, 4, 2)와 같이 중복된 숫자가 들어갈 수 있다. 예제 입력4 29 7 9 1 예제 출력1 71 97 99 9 위의 예제와 같이 (1, 7)이 뽑히면 추후 (7, 1)은 뽑을 수 없다.따라서 N과 M(9)번 문제의 풀이에서 조건을 추가하여 문제를 풀었다.조건 추가(1, 7), (7, 1)과 같은 중복을 막기 위해 뽑을 수열을 (k-1번째 수, k번째 수)이라고 가정했을 때, k-1번째 수 > k번째 수이면 백트래킹을 하지 않고 패스한다. 코드#include #include #include using namespace std;// N개 중에서, M개 뽑음int N, M..

알고리즘

[C++] Boj 15663 N과 M (9)

문제 링크15663 N과 M (9)접근N개의 수 중 M개의 수를 뽑아 수열을 만든다. 이때, 중복되는 수열은 없어야 하며, 사전순으로 출력해야 한다.예를 들어, 4개의 수(1, 7, 9(A), 9(B)) 중 2개를 뽑아 만들 수 있는 수열은 다음과 같다.1 71 97 17 99 19 79 9 (1, 7), (7, 1)은 되지만 (1, 9(A)), (1, 9(B))는 안 된다. 즉 사전순으로 중복되면 안 된다. 기존 백트래킹 방식에서 조금 응용하여 풀었다. 배열은 정렬되어 있다고 가정한다. N개의 수(1, 7, ... ,9(A), 9(B)) 중 M개를 뽑아 만들 수 있는 수열을 만든다고 가정해 보자. 기존 백트래킹 방식에서는 k번째 수를 뽑은 다음, k+1번째 수를 뽑기 위해 재귀 함수를 실행한다. 이때,..

Unity

Behavior Tree 개념 / 적용해 보기

Behavior Tree는 시스템의 의사 결정 및 행동 관리를 구조화하고 계층화된 방식으로 표현하는 모델이다.복잡한 행동을 논리적으로 설계하고, 확장성을 제공하는 데 유용하다.구조Behavior Tree는 트리 형태의 계층 구조로 이루어져 있으며, 트리의 각 노드는 특정 의사 결정 또는 행동 수행을 나타낸다. 1. Root Node트리의 최상위 노드이며, 행동의 시작점이다.2. Composite Node여러 하위 노드를 포함하며, 트리의 흐름을 제어한다.예로 Selector, Sequence가 있다.3. Decorator Node특정 조건을 추가하거나 노드의 결과를 수정한다.조건 충족 시에만 실행 등 4. Leaf Node (Action Node)실제로 행동을 수행하거나 조건을 평가한다.행동: 캐릭터의 ..

알고리즘

[C++] Boj 15657 N과 M (8)

문제 링크N과 M (8) N과 M 시리즈를 풀면서 뭔가 계속 날먹하고 있는 기분이다...큰 틀은 똑같고 부분부분 조건만 바꿔주면 되는 문제이다 보니...약간 공부를 안 하는(?) 느낌이다.아무튼 점수 올리고 개꿀. ㅎㅎ 문제 해석N개의 자연수 중 M개를 뽑는다. 이때 수는 중복으로 뽑아도 되지만 다른 수열과 순서는 같으면 안된다. 또한 내림차순 수열은 불가능하다. 접근백트래킹을 이용하여 풀었다.이때 중복은 허용하고, 내림차순 수열을 방지하기 위해 조건을 하나 붙였다.아까 뽑았던 숫자가 지금 뽑을 숫자보다 크면, 이 수열은 내림차순 수열이 되므로 pass 한다. 코드#include #include using namespace std;// N개 중에서, M개 뽑음int N, M;// n번째로 뽑은 수를 저장..

Unreal

[7강 숙제] 멤버 변수 및 멤버 함수 리플렉션 시스템 사용하기

6강 숙제에 리플렉션 시스템을 활용해 보았다. 코드(Test1.h)#pragma once#include "CoreMinimal.h"#include "GameFramework/Actor.h"#include "Test1.generated.h"UCLASS()class PROJECTJS_API ATest1 : public AActor{ GENERATED_BODY() public: ATest1();protected: UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Test1|Components") USceneComponent* SceneRoot; UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Test1|..

Unreal

언리얼 엔진 리플렉션

1. 리플렉션 시스템 이해하기1 - 1. Blueprint(시각적 스크립팅) 이해Blueprint는 언리얼 엔진에서 제공하는 시각적 스크립팅 도구로, 노드(블록)을 연결하여 게임 로직을 작성한다.장점Blueprint 그래프를 수정 후, 에디터에서 Play 버튼을 누르면 곧바로 결과를 확인할 수 있다.아이디어를 빠르게 검증하고 반복할 때 큰 장점이 된다.레고 블록을 쌓듯이 노드를 연결해 로직을 작성하므로, 프로그래밍 언어에 익숙하지 않은 초급자들도 쉽게 접근할 수 있다.한계점노드 수가 많아질수록 그래프가 복잡해져, 가독성과 유지보수가 어려워질 수 있다.C++과 비교했을 때, Blueprint는 내부적으로 추가 해석 과정을 거친다. 따라서 물리 연산이나 AI 같이 높은 성능이 필요한 시스템에서는 병목이 될 ..

Unreal

[6강 숙제] 위치/회전/스케일을 동적으로 변경하는 오브젝트 만들기

새로운 C++ 클래스를 만든다.BeginPlay()에서 액터의 트랜스폼을 임의로 설정한다.Tick()에서 매 프레임마다 트랜스폼을 동적으로 변경한다.특히 Scale이 일정 시간마다 커졌다가 작아지는 효과를 구현한다.이때, DeltaTime을 곱해 프레임에 독립적인 움직임을 구현한다.코드test1.h#pragma once#include "CoreMinimal.h"#include "GameFramework/Actor.h"#include "Test1.generated.h"UCLASS()class PROJECTJS_API ATest1 : public AActor{ GENERATED_BODY() public: ATest1();protected: USceneComponent* SceneRoot; UStaticMe..

(ꐦ •᷄ࡇ•᷅)
모르겠으면 외워