본문 바로가기

전체 글

(2344)
(C++) - 백준(BOJ) 2775번 : 부녀회장이 될테야 답 #include using namespace std; int t,k, n,d[15][15]; int main() { cin >> t; for (int i = 1; i n; cout
(C++) - 백준(BOJ) 6086번 : 최대 유량 답 #include #include #include #include #include using namespace std; int n, m, f; string u, v; struct MaximumFlow { struct Edge //정점과 용량을 정해줄 구조체 생성 { int to; int capacity; Edge *reverse; Edge(int to, int capacity) :to(to), capacity(capacity) {}; }; int n; int source; int sink; vector graph;//Edge형 구조체의 2차원 벡터 생성 MaximumFlow(int n, int source, int sink) :n(n), source(source), sink(sink) { graph.res..
(C++) - 백준(BOJ)코딩 10868 : 최소값 답 https://www.acmicpc.net/problem/10868 세그먼트 트리의 기본 예제문제였습니다. Code : 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647#include #include #include #include #include using namespace std;int n, m;void init(vector &tree, vector &a, int node, int start, int end)//트리에 시작점을 넣어 초기화해주는 함수{ if(start==end) tree[node] = a[start]; else { init(tree, a, node * 2, start, (start ..
(C++) - 백준(BOJ) 1761번 : 정점들의 거리 답 Lowest Common Ancestor(LCA)문제입니다 //트리상에서의 최단거리는 두 정점 사이의 거리이다. #include #include #include #include using namespace std; int n, m, u, v,cost,ans; int c[40001],depth[40001],dist[40001],parent[40001]; struct Edge { int to; int cost; Edge(int to, int cost) : to(to), cost(cost) {}; }; vector a[40001];//간선의 정점간의 가중치를 저장 queue q;//큐 생성 int lca(int u, int v) { if (depth[u] < depth[v]) swap(u, v); while ..
(C++) - 백준(BOJ) 11437번 : 가장 가까운 공통 조상 찾기 답 Lowest Common Ancestor(LCA)문제입니다 #include #include #include #include using namespace std; queue q; bool check[100001]; vector a[100001]; int depth[100001],parent[100001]; int n,u,v, m; //lca 함수 //두 노드를 비교한 뒤 레벨이 다르다면 같아질 때까지 레벨이 큰 것을 위로 올림 int lca(int u, int v) { if (depth[u] < depth[v]) swap(u, v); while (depth[u] != depth[v]) { u = parent[u];//레벨이 같아질 때 까지 부모노드를 넣어준다 } while (u != v)//두 정점이 같아..
(C++) - 백준(BOJ)코딩 2468번 : 안전 영역 답 www.acmicpc.net/problem/2468 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net 비의 높이를 1씩 증가시키면서 bfs로 안전영역의 개수를 센 후 가장 큰 값이 답인 brute force 문제였습니다. 풀이방법 1. 잠기는 물의 높이를 0부터 100까지라고 설정한 후 정한 물의 높이보다 높은 지역만 안전영역으로 지정하고 이를 값 1이라고 가정합니다. 2. 안전영역이 있다면 이와 인접한 안전영역을 check하기 위해 모든 안전영역을 검사하며 check가 안되어 있다면 bfs를 시행합니다. 따라서 bf..
(C++) - 백준(BOJ) 10830번 : 행렬 제곱 답 문제링크 : https://www.acmicpc.net/problem/10830 행렬 제곱을 구현해보는 문제였습니다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748#include using namespace std;long long a[6][6],ans[6][6],c[6][6],n,b;void cal(long long a[6][6], long long b[6][6]){ for (int i = 1; i 0) { if (b % 2 == 1)//지수가 홀수면 { cal(ans, a); } cal(a, a); b /= 2; } for (int i = 1; i
(C++) - 백준(BOJ) 2740번 : 행렬 곱셈 답 https://www.acmicpc.net/problem/2740 2740번: 행렬 곱셈 첫째 줄에 행렬 A의 크기 N 과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 순서대로 주어진다. 그 다음 줄에는 행렬 B의 크기 M과 K가 주어진다. 이어서 M개의 줄에 행렬 B의 원소 K개 www.acmicpc.net 간단한 행렬 곱셈 문제였습니다. Code #include using namespace std; int a[101][101], b[101][101],c[101][101],n,m,k; int main() { cin >> n >> m; for (int i = 1; i a[i][j]; cin >> m >> k; for (int i = 1; i b[i][j]; for (int i = 1; i