본문 바로가기

분류 전체보기85

BFS 문제 풀기 -> 미로 찾기 이와 비슷한 문제를 풀어본 적은 있지만 BFS문제라는 생각을 하고서 풀어본건 이번이 처음이다. 해당 문제는 4방향으로 이동 가능한 미로의 길을 따라 움직이며 (M,N)위치에 도달하기까지의 최종 움직인 횟수를 출력하는 문제였다. 그러므로 이동 가능한 모든 좌표에 최단거리를 계산하여 저장하고, (M,N)까지의 최단거리를 출력하게 된다. 자료구조는 큐를 사용하며 큐에 담긴 좌표들을 모두 검색하며 이동 가능한 방향이 이미 방문한 노드가 아니라면 해당 방향에 대한 좌표를 큐에 다시 담고, 해당 방향의 좌표에 대한 최단거리를 저장한다. 이를 재귀적으로 반복하면 최종적으로 모든 이동 가능한 좌표에 대한 최단거리를 저장할 수 있게 된다. 재귀 개념을 이용하여 접근하면서 직관적이게 해당 개념에 대해 알아보고 풀어나갈 수.. 2023. 2. 2.
퀵 정렬 구현하기 퀵 정렬은 O(n logN)의 시간 복잡도를 지닌 좋은 정렬법입니다. 배열의 가장 앞 인덱스를 기준점으로 양 끝점부터 시작하여 서로 만날때까지 반대편 인덱스로 넘어가며 검색하여 위치를 바꾸어줍니다. 양 끝점에서 시작한 점들이 만나는 지점의 인덱스와 기준점으로 잡은 값을 바꿔주어 기준점 왼편과 오른편에 각각 더 작은 수와 큰 수가 오게 됩니다. 이를 기준점 인덱스를 기준으로 양 옆의 배열들을 다시 재귀적으로 함수를 호출하여 정렬을 하게되면, 결과적으로 배열의 모든 값들이 오름차순으로 정렬되어짐을 알 수 있습니다. 아래는 위에서 설명한 퀵 정렬을 C++언어를 이용하여 만든 소스코드입니다. 템플릿 프로그래밍을 이용하여 모든 클래스에 대해 적용할 수 있게끔 일반화 프로그래밍을 하였습니다. template vec.. 2023. 2. 1.
C++ 지뢰찾기 게임 만들기 오늘은 C++를 이용하여 간단하게(?) 만든 지뢰찾기를 리뷰해보는 시간을 가지겠습니다. 연습 용도로 만든 프로그램이니 감안해서 봐주시면 감사하겠습니다. 우선, 지뢰찾기를 만들기 위해서 Game이라는 클래스를 만들고, Game의 화면을 담당할 Screen이라는 클래스를 만들었습니다. 마지막으로 입력값을 받기 위해서 Input이라는 클래스르 만들었습니다. 제가 만든 프로그램에서는 해당 세가지 클래스를 가지고 게임을 제작하였습니다. #pragma once #pragma warning(disable : 4996) #include using std::vector; #include "input.h" class Screen; #define COLS 10 #define ROWS 10 #define MINE 'X' #d.. 2022. 11. 6.
DirectX11 봄버맨 모작 프로젝트 개발일지 (2) 오늘은 저번 포스팅에 이어 콜라이더를 구현하고, 이를 활용하여 오브젝트간의 충돌을 체크하여 상호작용을 하는 것까지 만들어보도록 하겠습니다. 콜라이더를 구현하기 위해서 대략적인 계획을 만들어 보았습니다. 1. Collider 제작 2. Collider를 관리할 Manager 생성 3. Collider를 오브젝트에 추가 4. 충돌을 체크할 오브젝트 그룹을 추가 5. 각 오브젝트에 충돌 시의 상호작용 구현 순서에 따라서 조금씩 알아가보도록 합시다! 콜라이더부터 살펴보도록 합시다. #pragma once #include "pch.h" class ModelClass; class EffectClass; class Collider { private: static UINT g_iNextID;// ModelClass* .. 2022. 11. 6.