본문 바로가기

전체 글

(845)
[백준 7795번] 먹을 것인가 먹힐 것인가 (C++) 문제링크 : https://www.acmicpc.net/problem/7795 7795번: 먹을 것인가 먹힐 것인가 심해에는 두 종류의 생명체 A와 B가 존재한다. A는 B를 먹는다. A는 자기보다 크기가 작은 먹이만 먹을 수 있다. 예를 들어, A의 크기가 {8, 1, 7, 3, 1}이고, B의 크기가 {3, 6, 1}인 경우에 A가 B를 먹을 www.acmicpc.net #include using namespace std; typedef long long ll; typedef pair pii; const int MAX = 987654321; int T, A, B; int arr1[20001], arr2[20001]; int main() { ios_base::sync_with_stdio(0); cin...
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 3-10 C++에서 함수 호출하기 저번에는 구조체를 사용해 위치를 직접 할당해줬지만, 이번에는 함수를 호출하여 위치를 지정해준다. 블루 프린트에서 SetActorLocation이라는 함수를 사용했던 것을 기억할 것이다. C++에서도 같은 함수를 사용하며, 인수라고 불리는 인풋을 받는다. FVector로 할당했던 1, 2, 3을 생성자를 통해 직접 할당해줄 수 있다. 컴파일 후 언리얼로 돌아가서 확인을 해보는데, 현재 MovingPlatform2 액터에는 컴포넌트가 존재하지 않는다. 따라서 사실상 위치를 가질 수 없는 상태이다. 이를 위해 컴포넌트로 큐브를 추가해주었다. 우리는 FVector(1, 2, 3)의 값을 FVector 타입 변수인 MyVector에 저장했었다. 따라서 SetActorLocation에 FV..
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 3-9 C++에서 구조체 사용하기 전 강의를 통해 간단한 변수를 사용해보았지만 벡터나 트랜스폼 같이 더 복잡한 유형은 어떻게 해야할까? 과정은 변수를 선언할 때와 거의 동일하다. 마찬가지로 언리얼에 노출시키기 위해 UPROPERTY(EditAnywhere)를 작성해주고, 이번에는 FVector 타입을 선언한다. 블루프린트에서 다뤘던 벡터를 이렇게 다루는데, 여기서 맨앞에 작성한 F는 구조체를 뜻한다. 앞서 MovingPlatform2에 A를 붙여 액터를 나타낸 것과 같은 방식이다. 값을 할당할 때에는 기존 변수 때와는 달리, 새 구조체나 클래스 값을 만드는 생성자가 필요하다. 생성자는 항상 데이터 타입과 이름이 같으며, 테스트로 X, Y, Z에 대해 각각 1, 2, 3을 할당해보았다. 이렇게 만든 값을 다른 값..
[백준 2343번] 기타 레슨 (C++) 문제링크 : https://www.acmicpc.net/problem/2343 2343번: 기타 레슨 강토는 자신의 기타 강의 동영상을 블루레이로 만들어 판매하려고 한다. 블루레이에는 총 N개의 강의가 들어가는데, 블루레이를 녹화할 때, 강의의 순서가 바뀌면 안 된다. 순서가 뒤바뀌는 경 www.acmicpc.net #include using namespace std; typedef long long ll; typedef pair pii; const int MAX = 987654321; int N, M, arr[100001]; int l, r; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> N >> M; for(int i=0; i> arr[..
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 3-8 C++ 파일 및 BeginPlay 저번 강의를 통해 C++ 변수를 선언해주었지만, 아직 기능을 실행하는 방법은 모른다. 이번엔 간단한 기능을 테스트해보게 된다. 블루프린트에서 BeginPlay를 기억할 것이다. Vscode에서 cpp 파일을 보면 마찬가지로 BeginPlay 항목이 존재한다. 블루 프린트 때와 마찬가지로 실행시에 해당 항목을 적용한다는 것이다. 우선 간단하게 전에 만들었던 MyInt의 값을 게임 플레이 시에 9로 바뀌도록 해보자. 단순히 MyInt에 9를 할당해주면 된다. 이제 언리얼로 돌아가 플레이를 누르면 MyInt의 값이 9로 바뀌어있다. 이번엔 할당이 아니라 간단한 덧셈을 테스트해보자. 이를 위해 입력받는 값 A, B와 결과값 APlusB를 선언해주었다. 이를 cpp 파일에서 단순..
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 3-7 UPROPERTY 변수 레벨 블루 프린트에서 변수를 만들었던 것을 기억할 것이다. 이번엔 VScode에서 C++ 변수를 생성해준다. 순서대로 타입, 변수명을 적고 이후에 원하는 값을 할당해주면 된다. 여기서 주의해야 할 것은 그냥 변수만 선언하면 VScode상에서만 수정이 가능한 코드이다. 만약 해당 변수를 레벨 블루 프린트때와 같이 언리얼에서도 사용하고 싶다면 변수 작성하기 전에 UPROPERTY를 선언해주어야 한다. 그리고 바로 다음에 오는 괄호에는 EditAnywhere을 적어주었는데, 이는 어디에서나 편집가능하도록 선언해준 것이다. 이후에 빌드를 해주는데, 언리얼 상에는 라이브코딩이라는 기능이 존재한다. 우측 하단에 위 빨간 박스로 체크한 이미지를 누르면 즉석에서 VScode를 통해 적었던 C++..
[백준 2776번] 암기왕 (C++) 문제링크 : https://www.acmicpc.net/problem/2776 2776번: 암기왕 연종이는 엄청난 기억력을 가지고 있다. 그래서 하루 동안 본 정수들을 모두 기억 할 수 있다. 하지만 이를 믿을 수 없는 동규는 그의 기억력을 시험해 보기로 한다. 동규는 연종을 따라 다니며, www.acmicpc.net #include using namespace std; typedef long long ll; typedef pair pii; const int MAX = 987654321; int T, N, M; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> T >> N; while(T--) { cin >> N; mapm; while(N--)..
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 3-6 C++ 프로젝트 컴파일링하기 이번에는 드디어 설치한 에디터를 통해 C++ 클래스를 생성하고 컴파일하는 과정을 직접 해보게 된다. 우선 언리얼에는 기본 에디터가 우리가 사용할 비주얼 스튜디오 코드(이하 VScode)가 아닌 비주얼 스튜디오로 되어있다. 따라서 이를 바꿔주는 작업이 필요하다. 위와 같이 편집 -> 에디터 개인설정을 들어가면 좌측에 소스코드 칸이 있다. 해당 칸에서 소스 코드 에디터를 전환하는 것이 가능하다. 전환후에는 언리얼을 재시작하는 것이 필요하다. 이제 C++ 클래스를 생성할 차례이다. 상단 툴에서 새로운 C++ 클래스를 선택하여 생성이 가능하다. 우리가 만들고자하는 것은 움직이는 플랫폼이기에 액터를 선택하여 만들어준다. 생성 과정에서 위와 같은 메시지가 뜨는 것을 볼 수 있다. 여기서..