https://www.acmicpc.net/problem/2583백준 2583번 문제입니다. 제가 요즘 공부하고 있는 dfs활용 문제에요. 밑에는 제 코드입니다.123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566#include #include #include #define MAX 101 int grid[MAX][MAX];bool visited[MAX][MAX];int M,N;int size, cnt; void dfs(int grid[MAX][MAX], int r, int c) { visited[r][c] = true; size++; if..
https://www.acmicpc.net/problem/2606 백준 2606번 문제입니다. 이번문제 또한 http://tiger1710.tistory.com/8 이때 풀었던 문제와 다를건 별로 없는거 같아요!11724번 문제는 그래프 한 뭉탱이?의 갯수를 세 주었다면, 이번문제는 한 뭉탱이에 1을 제외한 정점의 갯수만 세어주면 될거같아요!밑에는 제 코드 입니다.1234567891011121314151617181920212223242526272829303132333435#include #include #define MAX 101 int COM[MAX][MAX];bool visited[MAX];int N, M;int cnt; void dfs(int k) { visited[k] = true; for (in..
https://www.acmicpc.net/problem/10026 이번 문제도 DFS관련해서 풀은 문제입니다. 참고:(http://tiger1710.tistory.com/5) 밑에는 제 코드입니다. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556#include #include #include #define MAX 101 bool visited[MAX][MAX];int N; void rgb(char grid[MAX][MAX],int r,int c) { visited[r][c] = true; if (r > 0 && grid[r][c] == grid[r - 1][c] &&..
https://www.acmicpc.net/problem/11724이번 문제는 제가 포스팅한 DFS를 참고하면 좋을 거 같아요. (http://tiger1710.tistory.com/7) 이 문제는 탐색을 하면서 dfs 함수가 탐색한 횟수만 체크해주면 될거 같아요. 제가 공부한 dfs코드와 거의 변함이 없어서..12345678910111213141516171819202122232425262728293031323334353637383940#include #include #define MAX 1001 int G[MAX][MAX];bool visited[MAX];int N, M;int cnt; void dfs(int k) { visited[k] = true; for (int i = 1; i
DFS란 (Depth-First Search)라고 해요. 해석하자면 깊이를 우선해서 탐색한다?라고 할 수 있습니다. 무조건 한 우물만 판다는 얘기라고 생각할 수 있습니다. 천천히 한번 봐볼게요. 일단 이런 그래프가 있다고 가정하겠습니다. 모든 간선은 양방향입니다.이 그래프를 DFS를 적용해서 탐색하는 순서는 작은 숫자를 먼저 탐색한다 하면 결과는 (1->2->3->4->5->4->6->4->3->2->1)입니다.그림으로 순서를 보겠습니다.먼저 1에 방문합니다. 그다음 1은 방문했다고 체크해둡니다. 1에서 갈 수 있는 곳은 2와 5입니다. 작은 수 먼저 탐색하기로 하였으니 다음은 2로 이동합니다.2에 방문합니다. 2는 방문했다고 체크해두고, 2에서 갈 수 있는 곳은 1, 3, 4, 5인데요, 1은 아까 방..
https://www.acmicpc.net/problem/9012제가 포스팅한 stack 괄호검사 응용편 활용하면 될 것 같아요. http://tiger1710.tistory.com/4 밑에는 제가 사용한 소스 코드에요!12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394#include #include #include #include typedef struct stack { char data; struct stack *next;}Stack;..
이번에는 스택의 활용에 대해 알아볼게요! 저번에 제가 구현한 스택(리스트)을 이용해서 해볼게요. 바뀐 것은 스택에 저장하는 데이터 타입(int->char)로 바뀐것 밖에 없어요. 밑에는 괄호검사 코드입니다. (http://tiger1710.tistory.com/3) 참고하시면 좋을 것 같아요 1:brackets함수는 문자열과 스택을 이용해서 괄호 검사를 합니다! 2:최대는 문자열의 길이만큼 검사를 해야 합니다. 최소는 중간에 끝나겠죠? 3~5:문자열에 있는 괄호가 여는 괄호 ( 또는 { 또는 [ 이면 스택에 집어넣습니다! 6~33:까지는 문자열에 있는 괄호가 닫는 괄호 ) 또는 } 또는 ] 이면 하는 코드에요. 7~31:스택이 비어있지 않다면 닫는 괄호와 쌍이 맞는 괄호를 확인하고 스택에서 꺼내는 코드에..
자료 구조의 한 형태인 '스택'을 코드로 구현해 봤습니다. (배열로) 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950#include #include #define MAX 100 typedef struct stack { int s[MAX]; int top;}Stack; void init(Stack *p) { p->top = -1;} void push(Stack *p,int data) { p->top++; p->s[p->top] = data;} bool isFull(Stack *p) { if (p->top == MAX-1) return true; else return false;} bool i..