분류 전체보기 31

[프로그래머스 Lv.3] 베스트앨범

Solution ) (1) Map 자료형에 장르별 총 플레이수를 저장 (2) Map을 돌면서 총 플레이 수가 가장 높은 장르를 추출 (3) 해당 장르의 인덱스로, plays 배열에 접근해서 플레이 수가 높은 두 음악을 골라냄 (4) 이때, 주의해야할 점은 동일한 플레이 수의 경우 인덱스 숫자가 작은 것이 우선이다. 나같은 경우는 작은 인덱스 순으로 접근했기 때문에 플레이 수가 동일하다고 해서 덮어씌워지는 경우는 없었음. (5) 두 곡을 뽑아낸 장르는 목록에서 삭제 후, 더 이상 찾을 장르가 없을 때까지 재귀형식으로 2-5를 반복

방문자 수 1000명을 자축하며..

어느 새 티스토리 블로그 방문자 수 1000명을 달성했다! 블로그를 하게 된 게 생각보다 오래 됐는데, 아직 1000명이라고? 할 수도 있겠다. 하지만 이직을 하게 되면서 적응 기간 + 인간관계에 집중 + 현생의 고달픔 등을 겪으면서 블로그에 글을 쓰지 못하는 기간이 거의 8개월이 되었다. 그 8개월 동안 너무 많은 일이 있었고결국 최악의 12월을 보내고 2024년을 맞이하게 되었다. 삼재인가? 싶을 정도로 최악이라고 생각했고, 이 여운은 한동안 가시지 않을 것 같다. 그래서 작은 것들에 소소하게 좋아하고 스스로 축하하는 일을 가져야겠다고 생각할 찰나에 방문자 수 1000명을 곧 돌파한다는 걸 깨달았다. 얼마나 멋진 2024년이 되려고 이런 시련이 연달아 터졌는지.. 부디 좋은 일들만 일어나는 2024년..

끄적끄적잡담 2024.01.05

비헤이비어 트리 (행동 트리, Behavior Tree, BT) & 활용 예시

AI 행동 트리라고도 볼 수 있는 비헤이비어 트리(행동 트리, BehaviorTree, BT)는 어떤 조건을 충족하느냐에 따라, 해당 사물이 다양한 행동을 할 수 있도록 만드는 시스템을 구성하기 위한 방안으로 쓰인다. FSM(유한 상태 기계)의 확장성 한계를 극복하기 위해 고안된 것으로, FSM은 상태나 조건이 복잡해지면 코드가 지나치게 길어져 유지보수가 어려워지곤 했기 때문이다. 구조는 아래의 예시를 참고해보자. 비헤이비어 트리 구조 : 상태 노드 + 트리 구성 + 데코레이터 위 구조는 Line Engineering Blog 에서 가져온 Behavior Tree 설명 포스트에서 상당히 친절하게 설명되어있어 가져왔다. 구조를 찬찬히 살펴보면, Action1~6까지의 행동이 순차적으로 진행된다. (Sequ..

게임개발 2024.01.05

[C++] 둘이 뭐가 다른데? Enum vs Enum class

사실 내가 Enum class 를 쓰게된지는 얼마 되지 않았다. Enum 을 쓰던 버릇이 남아있었기 때문이었다.그러나 실제 업무를 하다보니 다른 실무자분들은 Enum class를 주로 쓰고 있었기에, 코드 스타일을 맞추려 Enum class를 쓰려고 노력하게 되었다. 그러던 어느 날, Enum class를 쓴 내 코드를 보고 팀장님이 던진 한마디."너, 여기서 Enum class 왜 쓰는지 알고 쓰는거야?" Enum class와 Enum의 차이에 대해 자세히 인지하지 못하고, 언제쓰면 효율적인지 알고 쓰는게 중요함을 잊고 무지성으로 코드를 짜려고했던 나를 돌아보게 하는 날이었다. 열거형 (Enumerator) 열거형을 쓰는 이유 프로그래머가 봤을 때, 직관적이기 때문에 가독성이 좋다. enum 으로 구성..

C++ 2023.12.22

[UE4] 문자열 변환 FName, FText, FString

https://docs.unrealengine.com/4.27/ko/ProgrammingAndScripting/ProgrammingWithCPP/UnrealArchitecture/StringHandling/ 스트링 처리 UE4 에서 사용가능한 스트링 클래스에 대한 개요와 FName, FText, FString 에 대한 참고 안내서입니다. docs.unrealengine.com 컨텐츠 개발을 하면서 문자열 클래스 간 변환할 일이 많아서 꼭 알아두면 좋다. FName -> FString TempString = TempName.ToString(); FName -> FText TempText = FText::FromName(TempName); FString -> FName (손실 위험 o) TempString ..

게임개발/unreal 2023.12.21

[UE5] Animation Loop 설정

개발환경 - UE5 5.1.1 - VisualStudio 2022 animation Loop 설정 애니메이션 블루프린트를 이용한 AnimInstance를 설정해 조건에 맞는 애니메이션을 추가할 때, 애니메이션이 1회만 재생되는 것이 디폴트로 설정되어 있었다. 애니메이션이 계속 반복되도록 설정하기 위한 방법! 1. 콘텐츠 브라우저에서 관리되는 Animation Blueprint 찾아서 들어간다. (나의 경우엔 ABP_MyAnim) 2. 좌하단 창의 "내 블루프린트" -> "애니메이션 그래프" -> "AnimGraph"를 클릭 3. 세팅해두었던 애니메이션 에셋 시퀀스 플레이어들 중, 루프 재생을 할 에셋을 선택한다. 4. 그럼 오른쪽에 뜬 "디테일"창에서 "세팅"->"애니메이션 루프" 체크박스를 클릭하면 끝..

게임개발/unreal 2023.04.04

[프로그래머스 Lv.0] 컨트롤 제트

* 비슷한 문제 https://chacha-nyang.tistory.com/13 [프로그래머스 Lv.2] 최댓값과 최솟값 운동은 "적절한 강도의 꾸준함"과 간혹 컨디션이 좋을 때 "근육통을 유발하는 강도"로 운동을 하면 근육 생성 및 유지에 효과가 좋다고 합니다. 뇌 운동도 비슷하다고 생각합니다. 매일 매일 어 chacha-nyang.tistory.com 위의 최댓값 최솟값 할 때 썼던 getline 을 써먹으면 되는 문제다. 레벨 0이어서 쉬워보이지만, getline 몰랐으면 귀찮았을 듯... (1) strList 에 차례대로 값 넣어주고 (2-1) Z가 아니면 숫자로 바꿔주고 (2-2) Z라면 그 전 값을 다시 빼주고 (3) 그렇게 합을 구하면 된다. #include #include #include ..

[프로그래머스 Lv.2] 피보나치 수

운동은 "적절한 강도의 꾸준함"과 간혹 컨디션이 좋을 때 "근육통을 유발하는 강도"로 운동을 하면 근육 생성 및 유지에 효과가 좋다고 합니다. 뇌 운동도 비슷하다고 생각합니다. 매일 매일 어려운 문제를 풀다가 빠르게 지쳐 손을 놓기보다는 쉬운 문제를 매일 매일 풀어보는 습관을 들이고자 하는 데에 목적이 있는 "심심풀이땅콩코테"입니다. 간혹 이상한 방법으로 문제를 풀긴 합니다(정말 '어우 이게머야..' 할 정도) 그냥 참고만 해주세요 :) (덧글로 본인의 풀이 방법을 적어주신다거나(본인의 코드를 자랑해주세요) 평화적인 지적을 환영합니다.) #include #include using namespace std; int solution(int n) { int answer = 0; std::vector vList..

[프로그래머스 Lv.1] 자릿수 더하기

운동은 "적절한 강도의 꾸준함"과 간혹 컨디션이 좋을 때 "근육통을 유발하는 강도"로 운동을 하면 근육 생성 및 유지에 효과가 좋다고 합니다. 뇌 운동도 비슷하다고 생각합니다. 매일 매일 어려운 문제를 풀다가 빠르게 지쳐 손을 놓기보다는 쉬운 문제를 매일 매일 풀어보는 습관을 들이고자 하는 데에 목적이 있는 "심심풀이땅콩코테"입니다. 간혹 이상한 방법으로 문제를 풀긴 합니다(정말 '어우 이게머야..' 할 정도) 그냥 참고만 해주세요 :) (덧글로 본인의 풀이 방법을 적어주신다거나(본인의 코드를 자랑해주세요) 평화적인 지적을 환영합니다.) #include using namespace std; int solution(int n) { int answer = 0; while(n > 0) { answer += n..