[알고리즘 문제] 70. 그래프 최단거리(BFS)
2020. 10. 21. 20:34
문제 풀이/알고리즘 문제풀이
코드 #include #include #include using namespace std; int ch[21], dis[21]; int main(void) { int n, m, i, a, b, x; vector map[21]; queue Q; cin >> n >> m; for (i = 1; i > a >> b; map[a].push_back(b); map[b].push_back(a); } Q.push(1); ch[1] = 1; while (!Q.empty()) { x = Q.front(); Q.pop(); for (i = 0; i < map[x].size(); ++i) { if (ch[map[x][i]] == 0) { ch[map[x][i]] = 1; Q.push(map[x][i]); dis[map[x]..
[알고리즘 문제] 69. 이진트리 넓이우선탐색(BFS)
2020. 10. 20. 12:30
문제 풀이/알고리즘 문제풀이
코드 #include #include using namespace std; int Q[100], front = -1, back = -1, ch[10]; vector map[10]; int main(void) { int i, a, b, x; for (i = 1; i > a >> b; map[a].push_back(b); map[b].push_back(a); } Q[++back] = 1; ch[1] = 1; while (front < back) { x = Q[++front]; cout
[알고리즘 문제] 68. 최소비용(DFS : 가중치 방향그래프 인접리스트)
2020. 10. 20. 12:18
문제 풀이/알고리즘 문제풀이
코드 #include #include using namespace std; int n, cost = 2147000000; int ch[21]; vector map[21]; void DFS(int v, int sum) { if (v == n) { if (cost > sum) cost = sum; } else { for (int i = 0; i > n >..
[알고리즘 문제] 67. 최소비용(DFS : 인접행렬)
2020. 10. 19. 14:57
문제 풀이/알고리즘 문제풀이
코드 #include #include using namespace std; int arr[21][21]; int ch[21]; int n, min = 2147000000; void DFS(int v, int sum) { int i; if (v == n) { if (sum > n >> m; for (i = 0; i > a >> b; cin >> arr[a][b]; } ch[1] = 1; DFS(1, 0); ..
[알고리즘 문제] 66. 경로 탐색(DFS : 인접리스트 방법)
2020. 10. 19. 14:40
문제 풀이/알고리즘 문제풀이
코드 #include #include #include using namespace std; int n, cnt = 0; int map[21][21]; int ch[21]; void DFS(int L) { int i; if (L == n) { ++cnt; } else { for (i = 1; i > n >> m; for (i = 1; i > a >> b; map[a][b] = 1; } ch[1] = 1; DFS(1); cout n >> m; for (i = 0; i > a >> b; map[a].push_back(b); } ch[1] = 1; DFS(1); cout
[알고리즘 문제] 65. 미로탐색(DFS)
2020. 10. 19. 14:33
문제 풀이/알고리즘 문제풀이
코드 #include #include #include using namespace std; int arr[8][8], ch[8][8]; int dx[4] = { -1, 0, 1, 0 }; int dy[4] = { 0, 1, 0, -1 }; int cnt = 0; void DFS(int x, int y) { int i, xx, yy; if (x == 7 && y == 7) { ++cnt; } else { for (i = 0; i 7 || yy 7) continue; if (arr[xx][yy] == 0 && ch[xx][yy] == 0) { ch[xx][yy] = 1; DFS..
[알고리즘 문제] 64. 경로 탐색(DFS)
2020. 10. 18. 23:45
문제 풀이/알고리즘 문제풀이
코드 #include #include #include using namespace std; int n, cnt = 0; int map[21][21]; int ch[21]; void DFS(int v) { // 종료 지점이라면 if (v == n) { cnt++; } else { for (int i = 1; i > n >> m; int p1, p2; for (int i = 1; i > p1 >> p2; map[p1][p2] = 1; } ch[1] = 1; DFS(1); cout
[알고리즘 문제] 63. 인접행렬(가중치 방향그래프)
2020. 10. 16. 13:25
문제 풀이/알고리즘 문제풀이
코드 #include #include #include using namespace std; int map[21][21]; int main(void) { int n, m; cin >> n >> m; int p1, p2, p3; for (int i = 1; i > p1 >> p2 >> p3; map[p1][p2] = p3; } for (int i = 1; i
[알고리즘 문제] 62. 병합정렬
2020. 10. 16. 13:11
문제 풀이/알고리즘 문제풀이
코드 #include #include #include using namespace std; vector vInt; vector vTemp; void divide(int left, int right) { int mid; int p1, p2, p3; if (left < right) { mid = (left + right) / 2; divide(left, mid); divide(mid + 1, right); p1 = left; p2 = mid + 1; p3 = left; while (p1
[프로그래머스] 레벨 2 - 타겟 넘버 (C++)
2020. 10. 9. 18:20
카테고리 없음
문제 설명 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3 사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 주어지는 숫자의 개수는 2개 이상 20개 이하입니다. 각 숫자는 1 이상 50 이하인 자연수입니다. 타겟 넘버는 1 이상 1000 이하인 자연수입니다. ..
[알고리즘 문제] 61. 특정 수 만들기(DFS : MS 인터뷰)
2020. 10. 9. 18:04
문제 풀이/알고리즘 문제풀이
코드 #include #include #include #include using namespace std; vector nums; int m; int cnt = 0; void DFS(int L, int value) { if (L == nums.size()) { if (m == value) { ++cnt; } } else { DFS(L + 1, value + nums[L]); DFS(L + 1, value - nums[L]); DFS(L + 1, value); } } int main(void) { int n, i; cin >> n >> m; nums.resize(n); for (i = 0; i > nums[i]; } DFS(0, 0); cout
[알고리즘 문제] 60. 합이 같은 부분집합(DFS : 아마존 인터뷰)
2020. 10. 8. 10:23
문제 풀이/알고리즘 문제풀이
코드 #include #include #include #include using namespace std; int n, ch[11], arr[11]; vector v; bool isEnd = false; void DFS(int L) { if (isEnd) return; int i, sum = 0; if (L == n + 1) { for (i = 1; i arr[i]; } DFS(1); if(!isEnd) cout arr[i]; } DFS(1); cout
[알고리즘 문제] 59. 부분집합(DFS)
2020. 10. 8. 09:53
문제 풀이/알고리즘 문제풀이
코드 #include #include using namespace std; int n, ch[11]; void DFS(int L) { int i; if (L == n + 1) { for (i = 1; i
[알고리즘 문제] 58. 이진트리 깊이우선탐색(DFS)
2020. 10. 7. 10:32
문제 풀이/알고리즘 문제풀이
코드 #include #include #include #include using namespace std; void D(int v) { if (v > 7) return; else { cout
[알고리즘 문제] 57. 재귀함수 이진수 출력
2020. 10. 7. 10:16
문제 풀이/알고리즘 문제풀이
코드 #include #include #include #include using namespace std; void recur(int n) { if (n == 0) return; else { recur(n / 2); cout > n; recur(n); return 0; } 출력 결과 채점 결과 해당 포스트는 'it 취업을 위한 알고리즘 문제풀이 (with C/C++) : 코딩테스트 대비' 강의를 수강하며 개인 백업용으로 메모하였습니다. 인프런: https://www.inflearn.com/course/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98# it 취업을 위한 알고리즘 문제풀이 (with C/C++) : 코딩테스트 대비 - 인프런 알고리즘과 자료구조를 이용해 문제해결력을 기르는게..
[알고리즘 문제] 56. 재귀함수 분석
2020. 10. 7. 10:03
문제 풀이/알고리즘 문제풀이
코드 #include #include #include #include using namespace std; void recur(int n) { if (n == 0) return; else { recur(n - 1); cout n; recur(n); return 0; } 출력 결과 함수가 호출되면 stack에 스택 프레임이 생성된다. 스택 프레임은 호출 정보(지역 변수, 매개변수, 복귀해야 할 주소 등)를 기록한다. 해당 포스트는 'it 취업을 위한 알고리즘 문제풀이 (with C/C++) : 코딩테스트 대비' 강의를 수강하며 개인 백업용으로 메모하였습니다. 인프런: https://www.inflearn.com/course/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98# it 취업을 위..
[알고리즘 문제] 55. 기차운행(stack 응용)
2020. 10. 6. 10:03
문제 풀이/알고리즘 문제풀이
코드 #include #include #include #include using namespace std; int main(void) { int n, m, i, idx = 0; cin >> n; stack st; vector vt(n); vector vt2(n); vector vtc; for (i = 0; i > vt2[i]; st.push(vt2[i]); vtc.push_back('P'); while (true) { if (st.empty()) break; if (st.top() == vt[idx]) { st.pop(); vtc.push_back('O'); ++idx; } else break; }..
[알고리즘 문제] 54. 올바른 괄호(stack)
2020. 10. 6. 09:39
문제 풀이/알고리즘 문제풀이
코드 #include #include #include using namespace std; int main(void) { int i, flag = 0; char c[31]; cin >> c; stack st; for (i = 0; c[i] != '\0'; ++i) { if (c[i] == '(') st.push(c[i]); else { if (st.empty()) { cout