본문 바로가기

Algorithm

(2139)
C++(씨쁠쁠)(cplusplus)-백준(baekjoon)(BaekJoon)코딩 9935번:문자열 폭발 답 스텍 문제 입니다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263#include #include #include using namespace std;char word[1000001],bomb[36];stack bombCheck;//first는 word에서 폭발 문자열을 발견했을 때 그 위치 저장,second는 bomb의 인덱스를 저장bool e[1000001];int cnt;int main(){ cin >> word >> bomb; int sWord = strlen(word); int sBomb = strlen(bomb);//문자와 폭발문자열..
(C++) - 백준(BOJ) 2606번 : 바이러스 답 BFS 문제 입니다. #include #include #include #include using namespace std; int n, m, u, v, c[101],cnt; vector a[101]; queue q; void BFS(int x) { q.push(x); c[x] = 1; while (!q.empty()) { int x = q.front(); q.pop(); for (int i = 0; i > n;//컴퓨터의 수 cin >> m;//연결된 ..
(C++) - 백준(BOJ) 10799번:쇠막대기 답 /*레이저는 여는 괄호와 닫는 괄호의 인접한 쌍 ‘( ) ’ 으로 표현된다. 또한, 모든 ‘( ) ’는 반드시 레이저를 표현한다. 쇠막대기의 왼쪽 끝은 여는 괄호 ‘ ( ’ 로, 오른쪽 끝은 닫힌 괄호 ‘) ’ 로 표현된다. */ #include #include #include using namespace std; //1.'('가 나올 때마다 개수를 세어준다 - > 세어주는 조건은 2번에--- //2.'()', '(())'를 구분해주어야한다 인덱스 차이가 1이 나는지 확인하고 push여부를 결정 string k; stack o; int cnt,ksize; int main() { cin >> k; ksize = k.size(); for (int i = 0; i < ksize; i++) { if (k[i] ..
(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)//두 정점이 같아..