전체 글

문제 설명 개발팀 내에서 이벤트 개발을 담당하고 있는 "무지"는 최근 진행된 카카오이모티콘 이벤트에 비정상적인 방법으로 당첨을 시도한 응모자들을 발견하였습니다. 이런 응모자들을 따로 모아 불량 사용자라는 이름으로 목록을 만들어서 당첨 처리 시 제외하도록 이벤트 당첨자 담당자인 "프로도" 에게 전달하려고 합니다. 이 때 개인정보 보호을 위해 사용자 아이디 중 일부 문자를 '*' 문자로 가려서 전달했습니다. 가리고자 하는 문자 하나에 '*' 문자 하나를 사용하였고 아이디 당 최소 하나 이상의 '*' 문자를 사용하였습니다. "무지"와 "프로도"는 불량 사용자 목록에 매핑된 응모자 아이디를 제재 아이디 라고 부르기로 하였습니다. 예를 들어, 이벤트에 응모한 전체 사용자 아이디 목록이 다음과 같다면 응모자 아이디..
· Game/Unreal
GameplayEffect 이전 포스팅에서는 Ability에서 AttributeSet의 값을 직접 바꿨다. 이번에는 GameplayEffect를 사용하여 Attribute를 변경해 보자. 이전과 동일하게 공격 판정을 통해 공격에 적중한 타깃에게 피해를 주어야 한다. 여기서 GameplayEffect를 적용하여 간편하게 피해를 주는 로직을 구현할 수 있다. GameplayEffect GameplayEffect(GE)란 게임에 영향을 주는 객체이다. 즉, 게임에 필요한 데이터에 영향을 주는 객체를 말한다. 예를 들어, 지금의 경우 공격에 적중한 타깃의 Health값을 깎아주어야 한다. 이때, Health값을 변경하는 역할을 하는 객체가 GE이다. GE는 보통 AttributeSet과 함께 동작하도록 구성되어..
문제 설명 n개의 노드가 있는 그래프가 있습니다. 각 노드는 1부터 n까지 번호가 적혀있습니다. 1번 노드에서 가장 멀리 떨어진 노드의 갯수를 구하려고 합니다. 가장 멀리 떨어진 노드란 최단경로로 이동했을 때 간선의 개수가 가장 많은 노드들을 의미합니다. 노드의 개수 n, 간선에 대한 정보가 담긴 2차원 배열 vertex가 매개변수로 주어질 때, 1번 노드로부터 가장 멀리 떨어진 노드가 몇 개인지를 return 하도록 solution 함수를 작성해주세요. 제한 사항 노드의 개수 n은 2 이상 20,000 이하입니다. 간선은 양방향이며 총 1개 이상 50,000개 이하의 간선이 있습니다. vertex 배열 각 행 [a, b]는 a번 노드와 b번 노드 사이에 간선이 있다는 의미입니다. 풀이 레벨3 문제치고는..
· Game/Unreal
AttributeSet 이전 포스팅에서는 공격 판정에 대한 내용을 다뤘다. 공격 판정이 완료된 후, 결과를 타깃에게 적용해야 한다. 보통 공격에 맞은 대상은 체력이 깎이게 된다. 또한, 얼마나 피해를 줄지에 대한 기준이 되는 정보가 필요하다. 이러한 Stat같은 데이터들을 쉽게 다룰 수 있게 해주는 AttriubuteSet이다. 이번 포스팅에서는 AttributeSet을 통해 공격에 적중된 Actor에게 피해를 입히는 예시를 구현해 보겠다. AttributeSet 설명 AttributeSet은 단일 어트리뷰트 데이인 GameplayAttributeData의 묶음이다. GameplayAttributeData는 두 가지 값으로 구성되어 있다. BaseValue: 기본 값, 영구히 적용되는 값 CurrentV..
문제 설명 도넛 모양 그래프, 막대 모양 그래프, 8자 모양 그래프들이 있습니다. 이 그래프들은 1개 이상의 정점과, 정점들을 연결하는 단방향 간선으로 이루어져 있습니다. 크기가 n인 도넛 모양 그래프는 n개의 정점과 n개의 간선이 있습니다. 도넛 모양 그래프의 아무 한 정점에서 출발해 이용한 적 없는 간선을 계속 따라가면 나머지 n-1개의 정점들을 한 번씩 방문한 뒤 원래 출발했던 정점으로 돌아오게 됩니다. 도넛 모양 그래프의 형태는 다음과 같습니다. 크기가 n인 막대 모양 그래프는 n개의 정점과 n-1개의 간선이 있습니다. 막대 모양 그래프는 임의의 한 정점에서 출발해 간선을 계속 따라가면 나머지 n-1개의 정점을 한 번씩 방문하게 되는 정점이 단 하나 존재합니다. 막대 모양 그래프의 형태는 다음과 ..
문제 설명 밤늦게 귀가할 때 안전을 위해 항상 택시를 이용하던 무지는 최근 야근이 잦아져 택시를 더 많이 이용하게 되어 택시비를 아낄 수 있는 방법을 고민하고 있습니다. "무지"는 자신이 택시를 이용할 때 동료인 어피치 역시 자신과 비슷한 방향으로 가는 택시를 종종 이용하는 것을 알게 되었습니다. "무지"는 "어피치"와 귀가 방향이 비슷하여 택시 합승을 적절히 이용하면 택시요금을 얼마나 아낄 수 있을 지 계산해 보고 "어피치"에게 합승을 제안해 보려고 합니다. 위 예시 그림은 택시가 이동 가능한 반경에 있는 6개 지점 사이의 이동 가능한 택시노선과 예상요금을 보여주고 있습니다. 그림에서 A와 B 두 사람은 출발지점인 4번 지점에서 출발해서 택시를 타고 귀가하려고 합니다. A의 집은 6번 지점에 있으며 B..
· Game/Unreal
공격 판정 이전 포스트에서 구현한 콤보 공격에서 공격 판정을 추가로 구현할 것이다. 여태까지의 공격 기능에 흐름은 다음과 같다. 플레이어의 입력에 의해 캐릭터의 EnhancedInput이 감지되어 해당 함수를 실행 사전에 부여한 Ability 중 InputId에 맞는 Ability를 실행 Ability에서 애니메이션을 동작시키기 위해 AT(Ability Task)를 생성하여 실행 AT의 완료 Callback을 받아 마무리 위의 과정에서 애니메이션을 동작하는 부분이 있다. 이는 AnimMontage를 이용하여 애니메이션을 동작한다. GAS에서의 공격판정은 일반적인 UE프로젝트와 다르지 않게 시작된다. AnimMontage에 Notify를 등록하여 원하는 동작에서 공격을 판정하게 할 수 있다. 공격판정을 위..
hvv_an
이미난