Algorithms/Depth First Search
-
[DFS 알고리즘] 연산자 끼워 넣기Algorithms/Depth First Search 2021. 2. 27. 17:35
기출 : 삼성전자 SW 역량테스트 모든 경우의 수를 생각하는 것이 삼성전자 코딩테스트의 특징인것 같다 next_permutation을 통해 연산자 순서를 조정하고 모든 경우의 수를 판단해서 최댓값과 최솟값을 구했다 이 문제를 풀면서 새로 얻은 것은 음수 최솟값이다 int maxval = 0xf7f7f7f7; int minval = 0x7f7f7f7f; #include using namespace std; int n; int num[12]; int calc[4]; int maxval = 0xf7f7f7f7; int minval = 0x7f7f7f7f; vector op; int main() { ios::sync_with_stdio(0); cin.tie(0); cin >> n; for (int i = 0;i..
-
[DFS 알고리즘] 괄호 변환Algorithms/Depth First Search 2021. 2. 27. 16:57
기출 : 2020 카카오 신입 공채 1차 문제를 이해할 필요도 없이 문제에 제시된 알고리즘을 그대로 구현하면 정답이 나온다 균형잡힌 괄호 확인함수, 올바른 괄호 확인함수를 구현한 뒤 문제를 따라가면 답이 나온다 #include using namespace std; bool chk(string p) { stack s; if (p[0] == ')') return false; s.push(p[0]); for (int i = 1;i < p.length();i++) { if (p[i] == '(') s.push(p[i]); else if (p[i] == ')') { if (s.size() != 0) s.pop(); else return false; } } if (s.size() != 0) return false;..
-
[DFS 알고리즘] 문제풀이 전략Algorithms/Depth First Search 2021. 2. 11. 17:44
DFS는 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘이다 가장 깊은 부분 탐색 이후에 다시 거슬러 올라오는 과정이 필요하므로 과정을 기록할 수 있는 Stack을 주로 사용한다 동시에 깊이를 확인하여 다시 올라갈지 결정해야 하므로 재귀 함수를 사용한다 대표 예제를 통해 이를 연습해보자 문제 : N*M 크기의 얼음 틀이 존재한다. 얼음 틀 모양이 주어졌을 때 생성되는 아이스크림의 수를 구하라 입력 조건 첫 번째 줄에 얼음 틀의 세로 길이 N과 가로 길이 M이 주어진다 (1 n >> m; for (int i = 0;i > board[i][j]; if (board[i][j] == 1) check[i][j] = -1; } } f..