자기개발 38

[UE5] 3. RPC를 공부하며..

- 저는 UE를 공부중인 학생이며, 복습의 목적으로 작성한 글이므로 틀린 내용이 있을 수 있습니다. 틀린 내용이 있을 시 댓글로 작성해주시면 찾아보고 반영하겠습니다. RPC는 Remote Procedure Control의 약자로 Client-Server 모델에서 통신을 위해 사용되는 기술?이다. 멀티플레이어 게임을 만들면 보통 CSM을 이용하게 되는데, 이 경우 서버(Dedicated Server, Listen Server)와 클라이언트(User)간의 데이터 검증이 중요하게 작용한다. 서버에 대해 부연 설명을 하자면, 마인크래프트를 예시로 들었을 때, Bukkit등을 이용해 CLI같은 곳에서 콘솔만 주구장창 뜨는 화면이 서버 역할을 하면 Dedicated LAN 서버 열기하면 플레이어가 호스트가 되서, ..

자기개발/UE5 2023.02.24

[UE5.1] 위젯과 ChatGPT

Unreal Engine을 공부하면서 가장 불편한 점은, 내가 영어를 아주 못한다는 것이다. ChatGPT에 대해서는 작년 11월즈음부터 알고있었으나, 그냥 장난감식으로 생각하고있었는데 차세대 검색엔진같은 말이 하도 나오니 구글링대신 ChatGPT를 사용해볼까? 하는 생각이 들어 바로 시도해봤다. 먼저, Construction Script에서 Data Table을 ConstructorHelper::FObjectFinder로 불러온 후에 FindRow를 실행했는데, 이렇게 할 경우 DataTable을 변경/저장 한 뒤, 컴파일을 하더라도 최초 컴파일 당시의 DataTable 상태를 호출한다. 대충 원인은 어딘가에 ObjectPtr의 형태로 캐싱되어 있어서, 그걸 새로고침하지 못하고 계속 복사하고 있다.. ..

자기개발/UE5 2023.02.22

[UE5] 2. Mesh Outline

이전 게시글인 '돌 캐기'에서 캘 수 있는 돌을 인식하는 방식은 다음과 같다. 플레이어가 광물에 접근한다. 각각의 광물이 가진 Box Collider와 Player의 Collider가 Overlap된다. 3인칭 시점이기 때문에 선택한 방법인데 역시 너무 낭만이 없다 싶어서 바라보는 돌을 캐는 방식으로 만들어봐야겠다 싶었다. 이 글에 작성될 내용은, 보는 중인 돌을 캐게 만들기 위해 첫 번째로 한 작업인, 바라보는 중인 액터에 아웃라인을 표시하는 것이다. 아래로 적을 코드들은 결국 모두 유튜브(https://www.youtube.com/watch?v=1XqXvVFN5i4)의 튜토리얼을 따라한 것이다. 만약 영어를 잘한다면 뭔가 설명도 잘해주고 있으니 들어가서 직접 보는 것을 추천한다. 한글로 된 자료는 h..

자기개발/UE5 2023.02.07

[BOJ 16133] 공학용 계산기 (Calculator)

https://www.acmicpc.net/problem/16133 16133번: 공학용 계산기 (Calculator) 계산해야 할 식이 주어진다. 식의 길이는 100을 넘지 않으며, 문제에 주어진 문법을 만족한다. 또한 다음과 같은 조건을 만족하는 수식만 입력으로 주어짐이 보장된다. 계산 과정에서 등장하는 www.acmicpc.net 1. 접근 문제 상단에서 보이듯 BNF 같은 표기법이 있어서 이대로 구현했다. 단, 과 의 경우( +, -, *, / ) 써져있는대로 하면 오른쪽을 먼저 계산하게 되는데, 문제 제시대로라면 왼쪽이 먼저 계산되어야 하므로 = { [+ | -] } = { [* | / ] } 로 바꿔서 풀었다. 2. 과정 일단 InputStream을 Read하는 것만이 아니라, Peek하는 기..

자기개발/BOJ 2023.02.05

[BOJ 3830] 교수님은 기다리지 않는다.

https://www.acmicpc.net/problem/3830 3830번: 교수님은 기다리지 않는다 교수님의 질문 (? a b)이 입력으로 들어올 때 마다, 지금까지 측정한 결과를 바탕으로 a와 b의 무게 차이를 계산할 수 있다면, b가 a보다 얼마나 무거운지를 출력한다. 무게의 차이의 절댓값이 1,000, www.acmicpc.net 1. 접근 입력으로 'B는 A보다 W만큼 무겁다'는 정보가 주어진다. 이 정보를 통해 'A는 B보다 -W'만큼 무겁다는 정보도 알 수 있다. 자식 B에서 부모 A로 가는 간선에 W라는 정보를 준다면, 이 관계를 트리로 나타낼 수 있을 것이다. 또한, A와 B가 주어졌을 때, root_A와 root_B가 같다면 상대무게를 구할 수 있고, 다르다면 구할 수 없을 것이다. ..

자기개발/BOJ 2023.02.05

[UE5] 1. 돌 캐기

만들고자 하는 것 작동 순서 플레이어가 캘 수 있는 돌에 다가가면 F를 눌러 채광을 시작하라는 텍스트가 나옴. F를 누르면 돌을 캐는 애니메이션과 함께 진행도를 나타내는 Progress Bar가 나와서 상황을 알려줌. 채광이 완료되면 애니메이션 종료, 광물 Actor도 제거한다. 1. 플레이어가 캘 수 있는 돌에 다가가면 F를 눌러 채광을 시작하라는 텍스트가 나옴. 3인칭이기 때문에, Raycast(Line Trace)를 이용해 캐려는 광물을 추적하면 조작이 너무 어려워진다. 그래서 광물과의 거리가 일정 거리 내로 진입하면 그 광물을 채광할 수 있는 상태로 만드는 방식을 이용했다. 이 방식을 구현하는 방법은 일반적으로 HIt없이 Overlap만 작동하는 충돌체(Collider)를 만들어서 Overlap이..

자기개발/UE5 2023.01.12

[JAVA] 2023 카카오 블라인드 채용 1차 코테 문제 풀이

코테나 PS에 관심을 갖기 시작한게 9월~10월 쯤이었어서 신청을 못했었던게 아쉬웠었다. 최근 알고리즘 스터디에 들어가게 되면서 프로그래머즈에 카카오 2023 문제가 들어왔길래 풀어봤다. 문제 푸는 시간은 14:00~19:00로 5시간을 준다고 했었어서 시간을 재면서 문제를 풀어봤다. 1,2,3,4번을 푸는데 2시간이 걸렸고 7번 푸는데 2시간, 6번 푸는데 1시간 좀 넘게 걸리면서 타임 오버 5번을 푸는데 방향성을 잘못잡아서 2시간정도 쓴 것 같다. 6솔까진 할만했을 거 같은데 아쉬움이 남는다.. 1번. 개인정보 수집 유효기간 (프로그래머즈 링크) 단순한 문자열 파싱문제이다. 날짜는 YYYY.MM.DD 형식으로 주어지고, 모든 달은 28일까지 있다고 한다. 즉, 문자열은 YYYY*(28*12) + MM..

[BOJ 3779] 주기

https://www.acmicpc.net/problem/3779 1. 접근 실패한 접근: 1~N/2까지 brute force로 반복하는지 탐색. 문자열이 길어지자 너무 속도가 느려졌다. => KMP 알고리즘을 이용해 해결 KMP 알고리즘을 이용하면, 어떤 문자열 A의 몇번째 글자까지 Prefix와 Suffix가 일치하는지 구할 수 있다. 문제의 TC#2였던 aabaabaabaab를 예시로 들면, - len=2 "aa"는 첫 번째 글자까지 같음. (aa) - len=3 "aab"는 없음 (aab) - len=4 "aaba"는 첫 번째 글자까지 같음 (aaba) - len=5 "aabaa"는 두 번째 글자까지 같음 (aabaa) - len=6 "aabaab"는 세 번째 글자까지 같음 (aabaab) 여기서..

자기개발/BOJ 2022.12.24

[BOJ 11967] 불켜기

문제 게시글은 이제 '접근 > 과정 > 코드 gist'순으로 작성해보려고한다. 1. 접근 - N*N개의 방이 있고, 불이 꺼졌다 켜졌다 하므로 boolean형의 N*N크기의 이차원 배열이 있어야한다. - 각 방에 다른 방의 불을 켤 수 있는 스위치가 존재하므로, 각 방에 스위치의 목록에 대한 정보를 저장해야한다. - 베시는 (0, 0)방에서 출발하여 불이 켜진 방으로만 이동 가능하므로, bfs를 이용한다. 2. 과정 - 먼저 입력값 N, M을 받고, M개의 정보를 저장해야한다. 이 때, 스위치 정보를 담는 방법을 정해야하는데 Java의 경우 방의 x,y값과 스위치로 연결된 방의 List를 갖는 클래스를 만드는 것이 일반적이다. - 또한, x, y의 범위는 [0, N) 이고 N은 100 이하임이 확실하므로..

자기개발/BOJ 2022.12.23

세그먼트 트리 2 (Segment Tree)

세그먼트 트리에 대해서 이전에 부분합을 구하는 것으로만 사용하는 것으로 작성한 적이 있다. 그러나 최근 BOJ에서 1168번 문제와 12899번 문제를 풀면서 다른 활용법을 알게 되었는데 이에 대한 내용이다. 세그먼트 트리의 특성은 간단하게 부모 노드가 모든 자식노드의 합이 된다는 것이다. 위에서 작성한 1168번 문제와 12899번 문제는 이 특성을 이용해 순서를 찾는데 이용하는 문제이다. 자, 다음과 같은 height 3에 모든 자식 노드가 1의 값을 가지는 세그먼트 트리가 있다. root node의 값을 통해 우리는 전체 자식노드 중 값을 가지는 노드가 총 4개임을 알 수 있다. 그리고 각 자식노드는 왼쪽부터 1, 2, 3, 4로, 오름차순으로 d=1의 등차수열에 매칭된다. tree[4] -> 1,..