inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘

A* 알고리즘 질문드립니다

해결된 질문

228

시슴

작성한 질문수 10

0

안녕하세요 

매번 좋은 강의 해주셔서 감사합니다

다름이 아니라 

A* 알고리즘 수업 내용에 관해 질문드립니다.

A* 알고리즘에서 PriorityQueue 를 이용해서 구현하셨는데

PriorityQueue 의 노드로 PQNode 를 선언? 구현하셨는데

앞서 동적배열 수업에서 등등 노드들은 class 형태로 구현을 하셨는데

왜 PQNode는 struct 로 구현하셨는지 궁금합니다

struct 를 class로 변경해도 실행 결과는 같은데

struct로 PQNode를 구현한 이유를 알려주실수 있으신가요?

(struct로 꼭 구현을 해야된다거나 struct가 class 보다 더 나은점이라든지 등등)

답변 부탁드리겠습니다

C#

답변 2

1

Rookiss

둘 중 무엇으로 구현해도 동작은 똑같지만,
C#에서 struct는 복사 형식이고 class는 참조 형식이라는 미묘한 차이가 있습니다.
딱히 둘 중 무엇이 더 좋다고 할 수는 없고, 장단점이 서로 교차 됩니다.

PQNode를 struct로 만들 경우,
PQNode a와 PQNode b가 있는 상황에서
a = b를 하면 b 데이터의 모든 값들이 a에 복사 됩니다. (여기선 F, G, Y, X 이렇게 4개의 정수가 복사 되겠네요)

반면 둘을 class로 만들 경우,
new를 할 때 힙 영역에 실제 데이터가 할당되고,
그 원본 데이터의 주소를 a와 b가 각기 들고 있게 됩니다.
즉 a = b를 하게 될 경우 딱히 어떤 복사가 일어나진 않고,
a가 바라 보고 있는 주소값만 b가 바라 보고 있던 주소값으로 동일하게 바뀌게 됩니다.

복사가 너무 빈번하고 부담되면 class가 낫고,
반대로 데이터 복사 비용이 낮아 오히려 메모리 할당 쪽이 부담되면 struct가 낫습니다.
아무튼 처음엔 어렵고 헷갈리는 개념이니 그냥 둘 중 무엇을 사용해도 일단은 큰 차이 없습니다.
C#의 Tuple이란 애도 예전엔 struct였다가 C# 4.0으로 넘어오면서 class로 바뀌기도 하고 뭐 그렇습니다.

0

시슴

답변 감사합니다

게임개발에서 주로 어느부분에 알고리즘들이 쓰이는지 궁금합니다

0

171

2

글꼴 바꿔도 자간이 좁아 찌그러져보이시는 분들

0

88

1

NullReferenceException 예외) 같은 실수하시는분 계실까봐 남겨요

0

66

1

parent를 Pos타입으로 만든 이유

0

74

1

콘솔창에 격자가 안나옴 미로 생성 X

0

133

1

격자 생성 안됨 무한루프

0

114

1

BFS 질문

0

143

2

격자 무한 출력

0

167

2

A* 의 PriorityQueue 관련 질문입니다

0

155

2

vscode에서 원그리기

0

180

1

환결설정 강의 원 그리기

0

122

1

15-17분

0

87

1

3:16초에 근데 이렇게 해가지고 부분에 "{}"를 만들어서 자식 node들을 생성하던데 왜 중괄호로 감싸게 만드는 건가요?

0

141

2

동적 배열 관련 질문입니다!

0

209

1

Big-o 표기법에서 시간 복잡도

0

167

1

7:40에서 언급하신 색상이 날아가는 문제 이해를 못하겠습니다

0

151

1

트리구현연습 강의 질문있어요

0

142

1

창은 뜨는데 맵이 나타나지 않아요.

0

175

1

Ctrl F5 하면 나오는 창은 어디서 설정할까요??

0

271

1

void CalcPathFromParent(Pos[,] parent)에 대해서

0

202

2

NullReferenceException예외가 발생했을때 어떻게 해야하나요?

0

229

1

[해결] 환경설정 강의에서 원이 이상하게 그려지는 문제

3

311

2

오른손 법칙에서 플레이어 점이 안 움직입니다

0

245

2

맵 만들기 오류

0

179

1