BFS함수의 두 번째 while문 조건에 대하여
382
작성한 질문수 8
BFS함수의 두 번째 while문은
while (parent[y, x].Y != y || parent[y, x].X != x)
{
_points.Add(new Pos(y, x));
y = parent[y, x].Y;
x = parent[y, x].X;
}
이렇게 가르쳐주셨습니다.
그런데 제가 조건을 while (parent[y, x] != new Pos(y, x)) 로 수정을 해도 되지 않을까 싶어서 시도해보았는데 무한루프에 걸려버리더라구요. y, x의 부모가 자기 자신과 동일하다면 출발점이므로 강사님께서 가르쳐주신 조건과 같은 것이 아닌가요?
고민을 해보고 있는데 Pos라는 클래스를 새롭게 생성하게 되면 좌표는 동일하더라도 다른 주소를 가리키게 되는 것이기 때문에
parent[y, x] != new Pos(y, x) 라는 조건이 true가 될 수 없는 것인가요?
답변 2
2
고민을 해보고 있는데 Pos라는 클래스를 새롭게 생성하게 되면 좌표는 동일하더라도 다른 주소를 가리키게 되는 것이기 때문에 parent[y, x] != new Pos(y, x) 라는 조건이 true가 될 수 없는 것인가요?
-> 그렇습니다. '기본적'으로는 참조값을 비교하기 때문에, 둘이 다르다고 인식하는거죠.
하지만 방법이 없진 않습니다!
== 와 != 연산자가 어떤 일을 하는 것인지를
우리가 명시적으로 재정의 할 수 있는데,
위와 같이 하면 !=를 하더라도 참조값을 비교하는게 아니라
실제 안에 들어가 있는 y, x를 이용해 비교하게 됩니다.
게임개발에서 주로 어느부분에 알고리즘들이 쓰이는지 궁금합니다
0
170
2
글꼴 바꿔도 자간이 좁아 찌그러져보이시는 분들
0
86
1
NullReferenceException 예외) 같은 실수하시는분 계실까봐 남겨요
0
66
1
parent를 Pos타입으로 만든 이유
0
74
1
콘솔창에 격자가 안나옴 미로 생성 X
0
133
1
격자 생성 안됨 무한루프
0
113
1
BFS 질문
0
143
2
격자 무한 출력
0
166
2
A* 의 PriorityQueue 관련 질문입니다
0
155
2
vscode에서 원그리기
0
179
1
환결설정 강의 원 그리기
0
122
1
15-17분
0
86
1
3:16초에 근데 이렇게 해가지고 부분에 "{}"를 만들어서 자식 node들을 생성하던데 왜 중괄호로 감싸게 만드는 건가요?
0
140
2
동적 배열 관련 질문입니다!
0
209
1
Big-o 표기법에서 시간 복잡도
0
167
1
7:40에서 언급하신 색상이 날아가는 문제 이해를 못하겠습니다
0
151
1
트리구현연습 강의 질문있어요
0
142
1
창은 뜨는데 맵이 나타나지 않아요.
0
174
1
Ctrl F5 하면 나오는 창은 어디서 설정할까요??
0
271
1
void CalcPathFromParent(Pos[,] parent)에 대해서
0
202
2
NullReferenceException예외가 발생했을때 어떻게 해야하나요?
0
228
1
[해결] 환경설정 강의에서 원이 이상하게 그려지는 문제
3
308
2
오른손 법칙에서 플레이어 점이 안 움직입니다
0
243
2
맵 만들기 오류
0
178
1





