728x90
반응형

분류 전체보기 221

[백준/DP/C++] 11055번 가장 큰 증가 부분 수열

https://www.acmicpc.net/problem/11055 11055번: 가장 큰 증가 부분 수열 수열 A가 주어졌을 때, 그 수열의 증가 부분 수열 중에서 합이 가장 큰 것을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {1, 100, 2, 50, 60, 3, 5, 6, 7, 8} 인 경우에 합이 가장 큰 증가 부분 수 www.acmicpc.net dp는 수열 a와 같이 초기화해준다 전의 수열 값과 비교하면서 자신의 값보다 작으면 그 값의 dp값에 자신의 값을 더한 것과 자신의 dp값을 비교해 더 큰 값을 넣어주면 된다 #include using namespace std; int n; int dp[1001] = {0}, a[1001] ={0}; int main(void) { cin ..

알고리즘 2022.12.29

[백준/ DFS&BFS/ C++] 11724번 연결 요소의 개수

https://www.acmicpc.net/problem/11724 11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주 www.acmicpc.net DFS와 BFS 둘다 사용할 수 있을 것 같은데 나는 BFS가 아직 익숙하지 않아서 연습 겸 BFS로 풀었다 #include using namespace std; int n, m; vector graph[1001]; bool visited[1001]; int result = 0; void bfs(int start){ queue q; q..

알고리즘 2022.12.29

[백준/ DFS&BFS/ C++] 1260번 DFS와 BFS

https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net #include using namespace std; int n, m, v; vector graph[1001]; bool visited_dfs[1001]; bool visited_bfs[1001]; void dfs(int x){ // 현재 노드를 방문처리 visited_dfs[x] = true; cout v; for(int i=0; i> x >> y; grap..

알고리즘 2022.12.28

[이코테/ DFS&BFS/ C++] 미로탈출

https://www.youtube.com/watch?v=7C9RgOcvkvo&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC&index=4 #include using namespace std; int n, m; int graph[201][201]; // 이동할 네가지 방향 정의(상 하 좌 우) int dx[] = {-1, 1, 0, 0}; int dy[] = {0, 0, -1, 1}; int bfs(int x, int y){ // 큐 구현을 위해 queue 라이브러리 사용 queue q; q.push({x,y}); // 큐가 빌 때까지 반복 while(!q.empty()){ int x = q.front().first; int y = q.front().second; q.pop();..

알고리즘 2022.12.28

[이코테/ DFS&BFS/ C++] 음료수 얼려 먹기

https://www.youtube.com/watch?v=7C9RgOcvkvo&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC&index=3 #include using namespace std; int n, m; int graph[1001][1001]; bool dfs(int x, int y){ // 주어진 범위를 벗어나는 경우 즉시 종료 if(x=n || y=m){ return false; } // 현재 노드를 아직 방문하지 않았다면 if(graph[x][y] == 0){ // 해당 노드 방문 처리 graph[x][y] = 1; // 상하좌우 위치들도 모두 재귀적으로 호출 dfs(x-1, y); dfs(x, y-1); dfs(x+1, y); dfs(x, y+1); return t..

알고리즘 2022.12.28

[이코테/DFS&BFS/C++] DFS & BFS 기초 설명 및 예제

https://www.youtube.com/watch?v=7C9RgOcvkvo&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC&index=3 스택 자료구조 설명(선입후출) 스택 동작 예시 스택 구현 예제 stack s; // 선언 s.push(x); s.pop(); 큐 자료구조(선입선출) 큐 구현 예제 queue q; //큐 선언 q.push(x); q.pop(); 재귀함수 설명 재귀 함수의 종료 조건 DFS(Depth-First Search) 깊이 우선 탐색 - 그래프에서 깊은 부분을 우선적으로 탐색 - 스택 자료구조 혹은 재귀 함수 사용 #include using namespace std; bool visited[9]; vector graph[9]; void dfs(int x)..

알고리즘 2022.12.28
728x90
반응형