분류 전체보기 81

백준_11403_경로찾기

문제 : 인접행렬을 보고 i, j까지 가는 경로가 있으면 1 없으면 0을 출력해주는 문제 #include&ltiostream&gt using namespace std; int visited[100];//방문여부 int G[100][100];//입력값 int result[100][100];//최종 결과 그래프 int input; void input_value() { cin &gt&gt input; for (int i = 0; i &lt input; i++) { for (int j = 0; j &lt input; j++) { cin &gt&gt G[i][j]; } } } void DFS(int startnode) { for (int i = 0; i &lt input; i++) { if (G[startnode..

ALGORITHM 2017.09.19

최단 경로 전략

최단 경로 전략너비 우선탐색 대신 최댄 경로 문제를 풀기 위해 쓸 수 있는 2가지 방법 양방향 탐색 - 역방향 문제역뱡향 간선(?)을 찾아 내기 어려운 문제 너비의 노드가 각 3개씩있고, 깊이가 20일때 마지막 연산은 3^20이 된다. 이를 양방향에서 탐색하여 2*(3^(20/2))로 만들어 준다.점점 깊어지는 탐색 - 너비의 규모가 큰 탐색에서 깊이우선 탐색을 해야 메모리를 줄일 수 있다.문제가까운 순서대로 방문하지 않으므로 최단거리인지확신할 수없다.정점을 방문했는지 확인하지 않는다?해결 - 점점 깊어지는 탐색휴리스틱을 이용한 가지치기방법으로 사용하는 방법최단거리 best를 임의로 정해놓고 best를 넘으면 다시 길로 가고, 다 돌았는데 best값이 없으면 best++ 탐색방법 선택하기너비우선탐색을 최..

ALGORITHM 2017.09.17

[?]프로그래머스_카카오_데모2

문제 :1부터 n까지 숫자가 중복되지 않고 모두 있으면 true, 없으면 false '중복' 이라는 단어를 보고 파이썬을 생각하였다. list(set(arr))로 중복을 제거하고 순서대로 만들면서해쉬테이블을 이용해 숫자가 있는지 탐색을 하는 코드를 작성하였다. 하지만 실패가 몇개 떴다. def solution(arr): arr=list(set(arr)) arrlen=len(arr) print(arr) for i in range(1,arrlen): if(arr[i-1] != i): return False return True

ALGORITHM 2017.09.12

BFS_너비우선탐색

너비우선 탐색 (BFS) - 왜 너비우선 탐색인가? - 깊이 우선탐색과의 차이점 Concept 인접한 노드를 차례로 모두 방문하는 것 Queue를 이용한다. 왜 너비우선 탐색인가? - 탐색순서 A-(B-C-D)-(E-F) - height가 낮은 순서대로 탐색한다. 깊이 우선탐색과의 차이점 너비우선탐색 - 최소신장트리, 최단경로 - 무한히 깉은 트리에 효과적 - 목표노드로 가는 경로가 모두 같은 weight일때 비효율적 깊이우선 탐색 - 사이클 탐지, 위상정렬 - 무한히 넓은 트리에 효과적 - 목표노드가 없는 경로에 계속 빠질 수 있다. Queue를 사용하여 탐색한다. #Queue A pop A push B, C ,D (pop A) B C D pop B push E (pop B) C D E pop C pu..

ALGORITHM 2017.09.10