1

알고리즘 공부 1

알고리즘 공부 1

노아의 블로그

    목차
반응형

갓생을 살기 위해서 열심히 공부하기로 했다.

 

인프런에 C# 유니티 & 서버개발을 다루는 정말 좋은 강의가 있다.

 

기초에 대해서 잘 나와서 이 강의를 들음!

 

그래서, 이번 시간에는 미로를 만드는 기초 알고리즘에 대해 알아보았는데 SideWinder(?) 알고리즘이라고 한다.

 

간단하게 길을 막아놓고 점을 하나씩 찍고? 

그 점에서 2분의 1 확률로 오른쪽, 아래로 가는 방식임

 

다만 오른쪽으로 가다가 아래가 나왔을때 내가 간 연속된 지점중에 하나를 선택해서 아래로 내려가는 방식!

 

약간 헷갈리는 부분이 있었다.

 

x - randomIndex * 2 부분인데;;

 

칸이 두칸 간격(길 / 벽 / 길) 이라서 *2를 해주고?

거꾸로 두칸씩 가서 -를 하는것

그리고 마지막에

이렇게 막아두는 이유는 벽에 둘러쌓여있지 않아서... 굳이 x && y를 쓰는 이유는 23 , 23칸에서 무조건 길이 뚫리기 때문에..

 

 

우수법을 이용한 길찾기를 해보았다.. 개념은 

내 기준 오른쪽 방향으로  갈 수 있으면 오른쪽으로 한칸

 

앞으로 한칸

 

갈수 없을때는 왼쪽으로 90도 회전을 하는 형태다.

 

방향은 enum 형태로 정의를 하고..

 

대충 이렇게 진행됨.

Switch 문을 대체하기 위해서 배열과 인덱스를 사용해서 간편하게 처리하는 방법이 나왔다..

(오늘 프로젝트를 개발하면서 떠올린 방법인데..?) 많이 쓰나보다.

 

 dir = (dir - 1 + 4) % 4 를 하는 형태도 조금 헷갈릴수도 있는데, -를 하면 오른쪽으로 회전한다는 사실과 

음수가 되지 않게 + 4를 하는 것까지만 이해하면 된다. 

 

하지만 거기까지만 하면 이상한 수가 나오기 때문에? dir의 크기인 4를 나눠서 나머지 값을 dir로 설정하는것!

반응형

'컴퓨터 > 알고리즘' 카테고리의 다른 글

DFS  (0) 2023.10.28
퀵 정렬 (Quick Sort)  (0) 2023.10.16
정렬 알고리즘 (버블 정렬,선택 정렬)  (0) 2023.10.15