본문 바로가기

OLD_알고리즘224

백준] 2133 : 타일 채우기 BOJ에서 다음 문제들을 쭉 순서대로 풀어본다. boj.kr/문제번호 > N; dp[0] = 1; dp[1] = 1; for(int i = 2; i 2020. 10. 13.
너비 우선 탐색. Breadth-first search(BFS) - 너비 우선 탐색(Breadth-first search, BFS)은 맹목적 탐색방법의 하나로 시작 정점을 방문한 후 시작 정점에 인접한 모든 정점들을 우선 방문하는 방법. - 더 이상 방문하지 않은 정점이 없을 때까지 방문하지 않은 모든 정점들에 대해서도 너비 우선 검색을 적용한다. - 큐를 이용해서 구현 - 미로 찾기 알고리즘에서 주로 이용함 #include #include #include using namespace std; int number = 7; int c[8]; // check 처리 확인 배열 vector v[8]; void bfs(int start){ queue q; q.push(start); // queue에 시작점 넣고, arr[start] = true; // 방문 처리 while(!.. 2020. 10. 12.
깊이 우선 탐색. Depth First Search(DFS) 깊이 우선 탐색. Depth First Search(DFS) 트리나 그래프에서 한 루트로 탐색하다가 특정 상황에서 최대한 깊숙히 들어가서 확인한 뒤 다시 돌아가 다른 루트로 탐색하는방식이다. 대표적으로 백트래킹에 사용한다. 일반적으로 재귀호출을 사용하여 구현하지만, 단순한 스택 배열로 구현하기도 한다. 구조상 스택 오버플로우를 유의해야 한다. 다음과 같은 간단한 알고리즘에 따라 작동 1. 스택의 최상단 노드 확인. 2. 최상단 노드에게 방문하지 않은 인접 노드가 있으면 그 노드를 스택에 넣고, 방문처리. 방문하지 않은 인접노드가 없으면 스택에서 최상단 노드 빼기. #include #include using namespace std; // 총 7개의 노드가 인접한 노드를 가질 수 있도록. int numbe.. 2020. 10. 12.
백준] 1699 : 제곱수의 합 BOJ에서 다음 문제들을 쭉 순서대로 풀어본다. boj.kr/문제번호 여기서 +1을 해주는 이유는, 제곱수 2를 가지고 예를 들어보면 43에서 2의 제곱인 4를 빼면 d[39]가 나온다. 이는 결국 39에 2^2를 더해서 43을 만들어 준다는 의미로, 39를 만드는 최소 제곱수의 항의 개수 + 1이 되는 것이다. for(int i = 1; i n; tempN = n; for(int i = 1; i 2020. 10. 11.