diff --git "a/11-Kruskal&Prim/jaehoon/11866_\354\232\224\354\204\270\355\221\270\354\212\244\353\254\270\354\240\2340.cpp" "b/11-Kruskal&Prim/jaehoon/11866_\354\232\224\354\204\270\355\221\270\354\212\244\353\254\270\354\240\2340.cpp" new file mode 100644 index 0000000..c20e021 --- /dev/null +++ "b/11-Kruskal&Prim/jaehoon/11866_\354\232\224\354\204\270\355\221\270\354\212\244\353\254\270\354\240\2340.cpp" @@ -0,0 +1,44 @@ +#include +#include +#include +#include +using namespace std; + +int N,K; +queue q; + +int main(void) { + ios::sync_with_stdio(false); + cin.tie(NULL); + cout.tie(NULL); + + cin >> N >> K; + for (int i = 1; i <= N; i++) { + q.push(i); + } + + cout <<"<"; + int num = 1; + while(!q.empty()){ + if (num == K) { + if (q.size() == 1) { + cout << q.front(); + } + else { + cout << q.front() << ", "; + } + + q.pop(); + num = 1; + continue; + } + + int temp = q.front(); + q.pop(); + q.push(temp); + num++; + } + cout << ">"; + + return 0; +} diff --git "a/11-Kruskal&Prim/jaehoon/1192_\353\204\244\355\212\270\354\233\214\355\201\254 \354\227\260\352\262\260.cpp" "b/11-Kruskal&Prim/jaehoon/1192_\353\204\244\355\212\270\354\233\214\355\201\254 \354\227\260\352\262\260.cpp" new file mode 100644 index 0000000..d91e118 --- /dev/null +++ "b/11-Kruskal&Prim/jaehoon/1192_\353\204\244\355\212\270\354\233\214\355\201\254 \354\227\260\352\262\260.cpp" @@ -0,0 +1,76 @@ + + +#include +#include +#include + +using namespace std; +#define MAX 1000+1 +int V, E; +int parent[MAX]; +vector>> v; + +int find(int x) { //해당 노드의 부모를 찾는 함수 + if (x == parent[x]) { + return x; + } + else { + return parent[x] = find(parent[x]); + } +} + +void Union(int x, int y) { //부모가 다르다면 도착 노드의 부모를 시작 노드로 지정하는 함수 + x = find(x); + y = find(y); + + if (x != y) { + parent[y] = x; + } +} + +bool sameParent(int x, int y) { //부모가 같은지 판별하는 함수 + x = find(x); + y = find(y); + + if (x == y) { + return true; + } + + else { + return false; + } +} + +int main(void) { + + ios::sync_with_stdio(false); + cin.tie(NULL); + cout.tie(NULL); + + + int v1, v2, cost; + int result = 0; + cin >> V >> E; + + for (int i = 0; i < E; i++) { //시작 노드, 도착 노드, 가중치 입력받기 + cin >> v1 >> v2 >> cost; + v.push_back(make_pair(cost, make_pair(v1, v2))); + } + sort(v.begin(), v.end()); // 오름차순 정렬 + + for (int i = 1; i <= V; i++) { //부모의 초기 값은 자기 자신 + parent[i] = i; + } + + for (int i = 0; i < E; i++) { // 두 노드가 동일하지 않다면 둘을 이어주는 Union 함수 실행 후 가중치 더하기 + int vertex1 = v[i].second.first; + int vertex2 = v[i].second.second; + if (!sameParent(vertex1, vertex2)) { + Union(vertex1, vertex2); + result += v[i].first; + } + } + cout << result << "\n"; + + return 0; +} diff --git "a/11-Kruskal&Prim/jaehoon/1197_\354\265\234\354\206\214 \354\212\244\355\214\250\353\213\235 \355\212\270\353\246\254.cpp" "b/11-Kruskal&Prim/jaehoon/1197_\354\265\234\354\206\214 \354\212\244\355\214\250\353\213\235 \355\212\270\353\246\254.cpp" new file mode 100644 index 0000000..397ccd9 --- /dev/null +++ "b/11-Kruskal&Prim/jaehoon/1197_\354\265\234\354\206\214 \354\212\244\355\214\250\353\213\235 \355\212\270\353\246\254.cpp" @@ -0,0 +1,72 @@ +#include +#include +#include + +using namespace std; +#define MAX 10000+1 +int V, E; +int parent[MAX]; +vector>> v; + +int find(int x) { + if (x == parent[x]) { + return x; + } + else { + return parent[x] = find(parent[x]); + } +} + +void Union(int x, int y) { + x = find(x); + y = find(y); + + if (x != y) { + parent[y] = x; + } +} + +bool sameParent(int x, int y) { + x = find(x); + y = find(y); + + if (x == y) { + return true; + } + + else { + return false; + } +} + +int main(void) { + ios::sync_with_stdio(false); + cin.tie(NULL); + cout.tie(NULL); + + int v1, v2, cost; + int result = 0; + cin >> V >> E; + + for (int i = 0; i < E; i++) { //시작 노드, 도착 노드, 가중치 입력받기 + cin >> v1 >> v2 >> cost; + v.push_back(make_pair(cost, make_pair(v1, v2))); + } + sort(v.begin(), v.end()); // 오름차순 정렬 + + for (int i = 1; i <= V; i++) { //부모의 초기 값은 자기 자신 + parent[i] = i; + } + + for (int i = 0; i < E; i++) { // 두 노드가 동일하지 않다면 둘을 이어주는 Union 함수 실행 후 가중치 더하기 + int vertex1 = v[i].second.first; + int vertex2 = v[i].second.second; + if (!sameParent(vertex1, vertex2)) { + Union(vertex1, vertex2); + result += v[i].first; + } + } + cout << result<<"\n"; + + return 0; +} diff --git "a/11-Kruskal&Prim/jaehoon/19598_\354\265\234\354\206\214 \355\232\214\354\235\230\354\213\244 \352\260\234\354\210\230.cpp" "b/11-Kruskal&Prim/jaehoon/19598_\354\265\234\354\206\214 \355\232\214\354\235\230\354\213\244 \352\260\234\354\210\230.cpp" new file mode 100644 index 0000000..405e294 --- /dev/null +++ "b/11-Kruskal&Prim/jaehoon/19598_\354\265\234\354\206\214 \355\232\214\354\235\230\354\213\244 \352\260\234\354\210\230.cpp" @@ -0,0 +1,42 @@ +#include +#include +#include + +using namespace std; +typedef pairpil; + +int N, start, e; +int cnt = 0, res = 0; +vector v; + +int main(void) { + + ios::sync_with_stdio(false); + cin.tie(NULL); + cout.tie(NULL); + + cin >> N; + for (int i = 0; i < N; i++) { // 시작하는 시간은 1, 끝나는 시간은 -1로 vector에 삽입 + cin >> start >> e; + v.push_back(make_pair(start, 1)); + v.push_back(make_pair(e, -1)); + + } + sort(v.begin(), v.end()); //오름차순 정렬 + + + for (int i = 0; i < v.size(); i++) { + if (v[i].second == 1) { //시작할 때 +1 끝날때 -1해서 최대값 구함 + cnt++; + res = max(cnt, res); + } + else { + cnt--; + } + } + + cout << res; + + + return 0; +} diff --git a/11-Kruskal&Prim/README.md b/11-Kruskal&Prim/jaehoon/README.md similarity index 100% rename from 11-Kruskal&Prim/README.md rename to 11-Kruskal&Prim/jaehoon/README.md