44,000원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
RemoveAt 질문
16:33초 부터 진행하는 RemoveAt 관련 질문입니다. _data[i] = _data[i+1] 뒤에 있던 친구들이 앞으로 들어가는 부분은 이해했는데 17:45분 부터 18:20 말씀하시는 for문의 조건 Count, Count -1의 범위 부분을 제대로 이해하지 못하겠습니다 ㅠㅠ
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
우선순위 큐 관련 질문
Pop부분에서 if (_heap[left] > _heap[top] && left <= lastIndex) top = left; if (_heap[right] > _heap[top] && right <= lastIndex) top = right; 이렇게 적으면 인덱스가 초과 했다고 에러뜨고 강사님 입력하신 대로 if (left <= lastIndex &&_heap[left] > _heap[top]) top = left; if ( right <= lastIndex &&_heap[right] > _heap[top]) top = right; 입력하면 정상 출력되는데 조건문에서 AND니깐 상관없다고 생각이 드는데 왜 이렇게 서로 다른 결과가 나온는 건가요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
오류가 나는데 이유를 모르겠습니다..
오류가 이렇게 발생하는데..이유를 모르겠슴다..ㅠㅠ.. 이게..전 강의때 발생해서 처음부터 다시 강의 들으면서 작성을 했는데도 같은 오류가 뜨고 있습니다.. 저장파일이 문제 라서 오류 인거 같은데.. 어떻해야 할까요 비쥬얼 지웠다가 다시 깔아볼까요..?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
일반 배열의 시간 복잡도 질문드립니다
안녕하세요 6강까지 듣고 질문드립니다 강의를 통해 동적배열과 연결리스트에 대해서 1. add 2. 특정 인덱스 접근 3. remove 에 대해 각각 시간복잡도를 구하셨는데 일반 배열에 대해서는 1. 2. 3.에 대해 시간복잡도를 따로 알려주지 않으셔서 각각 복잡도가 어떻게 되는지 지적호기심이 차올라서 질문드립니다! 계산과정은 필요없더라도 결과만이라도 궁금하네요~^^
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
유니티 알고리즘 #2 3:45초 인덱스질문입니다.
한쪽만 tile[y,x+1]로 했더니 인덱스 넘었다고 떠서 생각나서 질문드립니다. 밑에 tile[y+1,x]로 했더니 되기는 하더군요. 그런데 인덱스를 생각해보면 그래도 넘는다고 생각합니다. 1. tile[size,size]로 25칸까지로 정의를 했는데 y+1은 인덱스번호가 25아닌가요? 2.지금 적다가 생각이 든건데 x,y가 짝수일때는 continue를 해줘서 인덱스가 괜찮은건가요?
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
IComparable의 구현부 관련 질문입니다.
IComparable을 설명하시면서 class Knight : IComparable<Knight>에서는 public int CompareTo(Knight other) { if (Id == other.Id) return 0; return Id > other.Id ? 1 : -1; } 라는 IComparable의 구현부가 필요하다고 하셨는데 어째서 class PriorityQueue<T> where T : IComparable<T>는 위처럼 따로 구현부를 만들어주지 않았는데도 잘 작동하는 건가요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
그 환경설정 부분에서 프레임 처리할때 질문드립니다!!
그 프레임 처리하실때 currentTick을 System.Environment.TickCount 로 계속 받아주는데 프로그램 실행 시간이 길어지면 currentTick 부분이 오버플로우가 나지는 않나요?? 딱히 루프에서 0으로 초기화하시지는 않으신 것 같아서 질문드립니다.
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
public List<TreeNode<T>> children { get; set; } = new List<TreeNode<T>>(); 가 프로퍼티인가요?
public List<TreeNode<T>> children { get; set; } = new List<TreeNode<T>>(); 가 프로퍼티인가요? '=' 앞에만 보면 프로퍼티랑 구조가 똑같은데 프로퍼티 뒤에 = new List<TreeNode<T>>(); 이런 식으로 값을 할당하는 걸 본 적이 없어서 헷갈리네요ㅠ
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
7분 40초쯤 BFS 예약과 관련된 질문입니다.
1번과 3번 중 예약 순서가 빠른 1번을 먼저 방문한다고 하셨는데, 그렇다면 1번이 예약 순서가 빠른 이유는 무엇인가요? 1,3번은 모두 0번과의 거리가 동일하다고 가정하셨는데, 거리가 동일하다면 예약 순서는 랜덤인가요?
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
Astar open 배열에 관하여 질문있습니다.
항상 좋은 강의 잘 듣고 있습니다. 다름이 아니라 Astar 알고리즘에 대해서 복습하던 중 궁금한 점이 생겨 질문드리게 되었습니다. Astar 알고리즘에서 open 배열과 우선순위 큐를 사용하셨는데, 우선순위 큐를 사용하면 open 배열 없이도 구현할 수 있지 않나요? 조금 코드를 변형시켜 open 배열 없이 다음과 같이 구현해 보았습니다. open배열을 사용하는것에 대한 장점이 따로 있을까요? void AStar() { // U L D R UL DL DR UR int[] deltaY = new int[] { -1, 0, 1, 0, -1, 1, 1, -1 }; int[] deltaX = new int[] { 0, -1, 0, 1, -1, -1, 1, 1 }; int[] cost = new int[] { 10, 10, 10, 10, 14, 14, 14, 14 }; bool[,] closed = new bool[_board.Size,_board.Size]; // 삭제 //int[,] open = new int[_board.Size, _board.Size]; // OpenList //for (int y = 0; y < _board.Size; y++) // for (int x = 0; x < _board.Size; x++) // open[y, x] = Int32.MaxValue; Pos[,] parent = new Pos[_board.Size, _board.Size]; PriorityQueue<PQNode> pq = new PriorityQueue<PQNode>(); //open[PosY, PosX] = 10 * (Math.Abs(_board.DestY - PosY) + Math.Abs(_board.DestX - PosX)); //PQNode에 parent 추가 pq.Push(new PQNode() { F = 10 * (Math.Abs(_board.DestY - PosY) + Math.Abs(_board.DestX - PosX)), G = 0, Y = PosY, X = PosX, parent= new Pos(PosY, PosX)}); while (pq.Count > 0) { PQNode node = pq.Pop(); if (closed[node.Y, node.X]) continue; closed[node.Y, node.X] = true; //추가 parent[node.Y, node.X] = node.parent; if (node.Y == _board.DestY && node.X == _board.DestX) break; for (int i = 0; i < deltaY.Length; i++) { int nextY = node.Y + deltaY[i]; int nextX = node.X + deltaX[i]; if (nextY < 0 || nextY >= _board.Size || nextX < 0 || nextX >= _board.Size) continue; if (_board.Tile[nextY, nextX] == Board.TileType.Wall) continue; if (closed[nextY, nextX]) continue; int g = node.G + cost[i]; int h = 10 * (Math.Abs(_board.DestY - nextY) + Math.Abs(_board.DestX - nextX)); //삭제 //if (open[nextY, nextX] < g + h) // continue; //삭제 //open[nextY, nextX] = g + h; pq.Push(new PQNode() { F = g + h, G = g, Y = nextY, X = nextX, parent = new Pos(node.Y, node.X) }); //parent 추가 } } CalcPathFromParent(parent); } 읽어주셔서 감사합니다.
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
강의와는 조금 거리가 있는 질문인데요
루키스님의 강의 항상 잘 보고 있습니다! 프로그래밍 기초부터 유니티까지 해서 여러번씩 돌리며 보고 있는데요. 물론 검색의 도움도 많이 받고 있습니다. 그런데 검색하다보니 이쪽 분야는 수학을 잘해야 한다고 하는 말들이 많더라구요. 물론 알고리즘 강의를 보니, 사고력? 논리력이라고 해야할까요? 이런 건 중요한거 같긴한데...이런것과 수학적 지식이 연관이 있는지.. 검색해봐도 다들 말이 다르더라구요. 어떤 사람은 중요하다고 하고, 어떤 사람은 아니라고 하고.. 또 누구는 수학 못하면 아예 이쪽으로는 올 생각도 말라고 하고, 누구는 또 아니라고 하고..너무 혼란스럽더라구요. 수학적 지식도 중요한건지...수학을 아예 못하면 안되는 건지...전문가이신 루키스님의 생각이 궁금합니다!
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
frontX, frontY, rightX, rightY 내 포지션 기준점
enum Dir { Up = 0, // 3 Left = 1, // 0 Down = 2, // 1 Right = 3,// 2 } // 현재 바라보고 있는 방향을 기준으로, 좌표 변화를 나타낸다. int[] frontY = new int[] { -1 , 0, 1, 0}; int[] frontX = new int[] { 0, -1, 0, 1 }; int[] rightX = new int[] { 1, 0, -1, 0}; int[] rightY = new int[] { 0, -1, 0, 1 }; frontY, frontX의 기준은 이해하였으나 , rightX와 rightY의 값들이 위와 같이 나뉘어진 이유를 알고 싶습니다.
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
플레이어 NullReferenceException 관련 질문
2분19초 Board.CS 파일 내부 Initialize 함수에서 _player = player; 대신에 Player _player = player;라고 선언하고 돌리면 NullReferenceException에러가 뜨는데 앞에 오브젝트명을 명시한 것은 작동이 안되고 오브젝트명을 생략한 녀석은 작동이 되는지 궁금합니다.
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
몇일전까지 Ctrl + F5 누르면 미로생성 잘 되었었는데요.
몇일전까지 Ctrl + F5 누르면 미로생성 잘 되었었는데요. 갑자기 오늘 해보니깐 까만색 화면에 아무것도 표시되지 않습니다. 이럴땐 어떻게 해야할까요 아마도 코드에 문제가 있는건 아닌거같습니다
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
printTree 에서 마지막 리프노드일 경우 오류가 왜 나지 않나요?
static void PrintTree(TreeNode<string>root) { Console.WriteLine(root.Data); foreach (TreeNode<string> child in root.Children) PrintTree(child); } 디자인팀에 전투노드가 루트에 들어가면 전투를 출력하고 children이 null이라서 오류가 발생된다고 생각했는데 아니 더라구요 foreach문 쓸때 null check가 필요없나요?? 아니면 children멤버변수에 주소값이 들어가있고 리스트가 텅빈 상태여서 그런건가요??
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
리스트 디버그 질문입니다.
0번 노드에 새로운 노드의 경로가 추가됐을 경우를 가정해서 100, 101, 102, 103을 추가했습니다. 이게 출력을 하면 위에 사진처럼 잘 나오는데 디버그 할때는 추가된게 보이지가 않습니다. 뭐가 문제일까요..?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
다익스트라 알고리즘 질문이 있습니다.
알고리즘이 시작되는 while문 안에서 처음 하는 동작중에 가장 가까운 distance의 정점를 찾아서 선택하는 과정이 있는데요. for (int i = 0; i < 6; ++i) { // 이미 방문한 정점은 스킵 if (visited[i]) continue; // 아직 예약된 적이 없거나, 기존 후보보다 멀리 있으면 스킵 if (distance[i] == Int32.MaxValue || distance[i] >= closest) continue; // 이때까지 발견한 가장 가까운 후보이기 때문에 정보 갱신. closest = distance[i]; now = i; } 굳이 가장 가까운 후보를 찾아야 하는 이유를 잘 모르겠습니다. 어느 쪽을 선택하든 최종적으로는 distance가 가장 짧은 쪽으로 갱신 되는 결과가 나올 것 같은데.. (1번이 아닌 3번을 먼저 선택해도 3번이 선택됐을 때 1번 + 10이 더 가깝기 때문에 3번의 distance가 1번을 통하는 쪽으로 distance가 갱신될것 같은데 굳이 더 짧다는 이유로 1번을 먼저 선택.) 혹시 필수 작업은 아니지만 가장 가까운 후보를 선택하는 것이 최종적으로 가장 짧은 distance를 가질 확률이 높아지기 때문에 해주는 작업일까요? 아니면 반드시 필요한 작업인데 제가 제대로 파악을 못한 걸까요 도움 주시면 감사하겠습니다!
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
지금 알고리즘은 먼 길부터 찾고 있는거죠?
안녕하세요. 추석연휴동안 열심히 다시 달리고 있습니다. 들을 때마다 친절하고 머리에 잘 들어오는 강의, 늘 놀라고 있습니다. 감사합니다. 그런데 현재 수업에 나온 길찾기 알고리즘은, 사실은 먼 거리부터 찾고 있는 것 맞나요? 프라이어리티 큐는 팝 하면 가진 것 중에 최대값을 꺼내고, 그 최대값은 F값으로, 먼 길이 예약 될 수록 F값이 클테고, 그래서 팝 하면 h값이 커지는 먼 길 방면부터 확인하게 되는 것 같아요. 맞을까요? 그래서 프라이어리티 큐를 역으로 만들어서 최소값부터 꺼내게 만들어 사용하면, 일단 도착점까지 가까워지는(h가 작은) 방향으로 먼저 길을 찾아봐서, 계산횟수가 줄어들기를 기대할 수 있을까요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
연결 리스트 구현에서 힙 관련 질문입니다!
연결리스트를 만들고 Remove를 하는 과정에서 이미 만들어진 MyLinkedListNode는 이미 AddLast()에서 new를 통해 객체를 만들어준 상태인데, Remove()에서는 그 주소를 참조하지 못하게 해서 지워버린것으로 이해했습니다. 그렇다면 그 객체는 주소가 없어지지만 힙에 남아있다고 이해했는데, 이 객체는 주소가 참조를 다시 할 수 없게 되어서 바로 자동으로 삭제되는지, 아니면 그대로 공간을 잡아먹는지 궁금해서 질문드립니다!
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
A* 알고리즘의 f=g+h에 대해서 질문이 있습니다.
이와같이 빙 돌아갈때 h가 증가하는데 결과적으로 예약한 좌표들의 우선순위(f=g+h)가 의도한 빨간색 화살표 방향과 다르게 역전이 되는 경우가 생각났습니다 이런 경우는 A*알고리즘으로 해결할 수 없나요? 아니면 제가 잘못 이해하고 있는건가요?