Anim Instance의 델리게이트가 발동되지 않는 문제 (해결 과정) 보기 AI 몬스터는 공격 애니메이션을 재생하고, 애니메이션에 있는 Attack 애님 노티파이를 통해 공격 로직을 수행하도록 구현했다. 하지만, 내가 AI를 1번 때린 이후부터는 내게 데미지를 입히지 않는 당황스러운 문제가 발생했다. 자세한 해결 과정은 이 링크를 참고하면 된다. Anim Instance의 델리게이트가 발동되지 않는 문제 (해결 과정) 보기 테스트와 삽질을 거쳐 찾아낸 원인은 다음과 같다. Anim Instance의 델리게이트가 발동하지 않았던 원인 1. Behavior Tree에서 Play Animation Task로 애니메이션을 재생한다. 2. Animation Mode가 Single로 바뀌면서 기존 Anim In..
Level 3. 등굣길 BFS가 가물가물해서 BFS로 풀어봤더니 시간 초과가 발생했다. 최단 거리순으로 확인하기 때문에, 최초 최단거리를 넘어서는 순간부터는 확인하지 않아도 된다. // 이 풀이는 시간 초과가 발생한다. #include #include #include using namespace std; struct point { int dist; int x; int y; }; int solution(int m, int n, vector puddles) { int answer = 0; int minDist = 0; int dx[] = {1, 0}, dy[] = {0, 1}; queue que; vector map(n, vector(m, true)); for (vector& puddle : puddles)..
Level 3. 최고의 집합 재귀를 이용해 합이 s가 되는 모든 n개의 조합을 구해 계산하는 방법이다. 나를 제외한 나머지에 해당하는 조합을 구한 후 나를 앞에 붙이는 방식이므로, vector보다는 deque을 사용했다. 하지만, 시간 초과가 발생했다. // 이 풀이는 시간 초과가 발생한다. #include #include #include using namespace std; deque get_sum_sets(int num, int n, int sum) { if (n == 1 && num
Level 3. 네트워크 i와 j 컴퓨터가 연결된 경우, i와 j의 연결을 끊고 i와 j부터 DFS를 수행해 연결된 컴퓨터들을 처리한다. #include #include using namespace std; void rDFS(int i, int j, int n, vector& computers) { computers[i][j] = computers[j][i] = 0; for (int k = 0; k < n; ++k) if (computers[i][k]) rDFS(i, k, n, computers); for (int k = 0; k < n; ++k) if (computers[j][k]) rDFS(j, k, n, computers); } int solution(int n, vector computers) {..
Level 3. 단어 변환 전형적인 BFS 문제다. 최솟값을 구해야하므로 DFS가 아닌 BFS를 사용해야 한다. #include #include #include #include #include using namespace std; bool canConvert(string& a, string& b) { static const int DIFF = 1; int diff = 0; for (int i = 0; i < a.length(); ++i) diff += (a[i] != b[i]); return (diff == DIFF); } int solution(string begin, string target, vector words) { int answer = 0; queue que; unordered_map isU..
Level 3. 베스트앨범 장르별 총 플레이 시간을 계산하기 위한 맵 1개, 장르별 플레이 타임이 가장 긴 곡 2개를 추리기 위한 맵 1개를 사용해 해결했다. #include #include #include #include #include using namespace std; vector solution(vector genres, vector plays) { vector answer; size_t N = genres.size(); unordered_map u1; unordered_map u2; for (int i = 0; i < N; ++i) { u1[genres[i]] += plays[i]; u2[genres[i]].push_back({plays[i], i}); } vector v1(u1.begin()..