본문 바로가기

graph2

[C/C++] 프로젝트 오일러 #82 path sum : three ways(다익스트라) 이번 문제는 앞에 #81 문제와 동일하게 경로의 합을 구하는데 있어서 최소의 경로값을 잦는 것입니다.앞의 문제가 two ways였던 것에 비해서 이번 것은 three ways입니다.  프로젝트 오일러 문제들 초창기가 제가 알고리즘 문제들 풀기 시작한 초기였던 점을 생각했을 때, 지금 보면 유치하기 짝이 없네요.일단 힙구조를 사용하지도 않고 짰고, 삽입정렬을 이용해서 짰네요.  뭐 삽입정렬을 한다고 한다면, \(O(N^2)\) 알고리즘이었다는 것이죠. 이것 작성할 때만 해도 STL 사용도 안 했을 때이니까요.  우선순위 큐를 사용하면 해결되었을텐데요. 행렬이 크기 않았기 때문에 풀 수 있던 것이죠. 동적 계획법으로 풀 수도 있습니다.  하지만 사이클이 있기때문에 반복을 많이 해야 안정된 값이 나오게 됩니다.. 2022. 10. 10.
[C/C++] 슬라이딩 퍼즐 - 움직임 슬라이딩 퍼즐의 자료구조를 잡는 것이 필요한데요.  제 경우에는 단순 배열로 작성을 했습니다.  char *squares; int emptySquare; squares 변수는 1차원 배열로, 2차원 배열을 따로 복잡하게 구성하지 않았습니다.  사실 C/C++ 언어에서 단순 배열은 모두 1차원 배열로 인식을 합니다.  형식만 2차원, 3차원이 되는 것 뿐이죠.  emptySquare는 어떤 칸이 비어있는지를 나타냅니다.  해당 칸은 0이란 값을 적게 됩니다. 이 자료구조를 토대로 움직임 함수를 구현한 것입니다. bool Move(PuzzleParams *param, eMove move){ int newEmptySquare = Move(param->squares, param->rows, param->c.. 2015. 2. 18.