Skip to content

Commit ff1197c

Browse files
committed
copy_table
1 parent c0b06f7 commit ff1197c

File tree

348 files changed

+15029
-1
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

348 files changed

+15029
-1
lines changed

Diff for: 1/1.py

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import time
2+
start_time = time.time() # 측정 시작
3+
4+
# 프로그램 소스코드
5+
end_time = time.time() # 측정 종료
6+
print("time:", end_time - start_time) # 수행 시간 출력

Diff for: 1/2.py

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
from random import randint
2+
import time
3+
4+
# 배열에 10,000개의 정수를 삽입
5+
array = []
6+
for _ in range(10000):
7+
array.append(randint(1, 100)) # 1부터 100 사이의 랜덤한 정수
8+
9+
# 선택 정렬 프로그램 성능 측정
10+
start_time = time.time()
11+
12+
# 선택 정렬 프로그램 소스코드
13+
for i in range(len(array)):
14+
min_index = i # 가장 작은 원소의 인덱스
15+
for j in range(i + 1, len(array)):
16+
if array[min_index] > array[j]:
17+
min_index = j
18+
array[i], array[min_index] = array[min_index], array[i] # 스와프
19+
20+
end_time = time.time() # 측정 종료
21+
print("선택 정렬 성능 측정:", end_time - start_time) # 수행 시간 출력
22+
23+
# 배열을 다시 무작위 데이터로 초기화
24+
array = []
25+
for _ in range(10000):
26+
array.append(randint(1, 100)) # 1부터 100 사이의 랜덤한 정수
27+
28+
# 기본 정렬 라이브러리 성능 측정
29+
start_time = time.time()
30+
31+
# 기본 정렬 라이브러리 사용
32+
array.sort()
33+
34+
end_time = time.time() # 측정 종료
35+
print("기본 정렬 라이브러리 성능 측정:", end_time - start_time) # 수행 시간 출력

Diff for: 10/1.cpp

+53
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
#include <bits/stdc++.h>
2+
3+
using namespace std;
4+
5+
// 노드의 개수(V)와 간선(Union 연산)의 개수(E)
6+
// 노드의 개수는 최대 100,000개라고 가정
7+
int v, e;
8+
int parent[100001]; // 부모 테이블 초기화하기
9+
10+
// 특정 원소가 속한 집합을 찾기
11+
int findParent(int x) {
12+
// 루트 노드가 아니라면, 루트 노드를 찾을 때까지 재귀적으로 호출
13+
if (x == parent[x]) return x;
14+
return findParent(parent[x]);
15+
}
16+
17+
// 두 원소가 속한 집합을 합치기
18+
void unionParent(int a, int b) {
19+
a = findParent(a);
20+
b = findParent(b);
21+
if (a < b) parent[b] = a;
22+
else parent[a] = b;
23+
}
24+
25+
int main(void) {
26+
cin >> v >> e;
27+
28+
// 부모 테이블상에서, 부모를 자기 자신으로 초기화
29+
for (int i = 1; i <= v; i++) {
30+
parent[i] = i;
31+
}
32+
33+
// Union 연산을 각각 수행
34+
for (int i = 0; i < e; i++) {
35+
int a, b;
36+
cin >> a >> b;
37+
unionParent(a, b);
38+
}
39+
40+
// 각 원소가 속한 집합 출력하기
41+
cout << "각 원소가 속한 집합: ";
42+
for (int i = 1; i <= v; i++) {
43+
cout << findParent(i) << ' ';
44+
}
45+
cout << '\n';
46+
47+
// 부모 테이블 내용 출력하기
48+
cout << "부모 테이블: ";
49+
for (int i = 1; i <= v; i++) {
50+
cout << parent[i] << ' ';
51+
}
52+
cout << '\n';
53+
}

Diff for: 10/1.java

+57
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
import java.util.*;
2+
3+
public class Main {
4+
5+
// 노드의 개수(V)와 간선(Union 연산)의 개수(E)
6+
// 노드의 개수는 최대 100,000개라고 가정
7+
public static int v, e;
8+
public static int[] parent = new int[100001]; // 부모 테이블 초기화하기
9+
10+
// 특정 원소가 속한 집합을 찾기
11+
public static int findParent(int x) {
12+
// 루트 노드가 아니라면, 루트 노드를 찾을 때까지 재귀적으로 호출
13+
if (x == parent[x]) return x;
14+
return findParent(parent[x]);
15+
}
16+
17+
// 두 원소가 속한 집합을 합치기
18+
public static void unionParent(int a, int b) {
19+
a = findParent(a);
20+
b = findParent(b);
21+
if (a < b) parent[b] = a;
22+
else parent[a] = b;
23+
}
24+
25+
public static void main(String[] args) {
26+
Scanner sc = new Scanner(System.in);
27+
28+
v = sc.nextInt();
29+
e = sc.nextInt();
30+
31+
// 부모 테이블상에서, 부모를 자기 자신으로 초기화
32+
for (int i = 1; i <= v; i++) {
33+
parent[i] = i;
34+
}
35+
36+
// Union 연산을 각각 수행
37+
for (int i = 0; i < e; i++) {
38+
int a = sc.nextInt();
39+
int b = sc.nextInt();
40+
unionParent(a, b);
41+
}
42+
43+
// 각 원소가 속한 집합 출력하기
44+
System.out.print("각 원소가 속한 집합: ");
45+
for (int i = 1; i <= v; i++) {
46+
System.out.print(findParent(i) + " ");
47+
}
48+
System.out.println();
49+
50+
// 부모 테이블 내용 출력하기
51+
System.out.print("부모 테이블: ");
52+
for (int i = 1; i <= v; i++) {
53+
System.out.print(parent[i] + " ");
54+
}
55+
System.out.println();
56+
}
57+
}

Diff for: 10/1.py

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# 특정 원소가 속한 집합을 찾기
2+
def find_parent(parent, x):
3+
# 루트 노드가 아니라면, 루트 노드를 찾을 때까지 재귀적으로 호출
4+
if parent[x] != x:
5+
return find_parent(parent, parent[x])
6+
return x
7+
8+
# 두 원소가 속한 집합을 합치기
9+
def union_parent(parent, a, b):
10+
a = find_parent(parent, a)
11+
b = find_parent(parent, b)
12+
if a < b:
13+
parent[b] = a
14+
else:
15+
parent[a] = b
16+
17+
# 노드의 개수와 간선(Union 연산)의 개수 입력 받기
18+
v, e = map(int, input().split())
19+
parent = [0] * (v + 1) # 부모 테이블 초기화하기
20+
21+
# 부모 테이블상에서, 부모를 자기 자신으로 초기화
22+
for i in range(1, v + 1):
23+
parent[i] = i
24+
25+
# Union 연산을 각각 수행
26+
for i in range(e):
27+
a, b = map(int, input().split())
28+
union_parent(parent, a, b)
29+
30+
# 각 원소가 속한 집합 출력하기
31+
print('각 원소가 속한 집합: ', end='')
32+
for i in range(1, v + 1):
33+
print(find_parent(parent, i), end=' ')
34+
35+
print()
36+
37+
# 부모 테이블 내용 출력하기
38+
print('부모 테이블: ', end='')
39+
for i in range(1, v + 1):
40+
print(parent[i], end=' ')

Diff for: 10/2.py

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
def find_parent(parent, x):
2+
if parent[x] != x:
3+
parent[x] = find_parent(parent, parent[x])
4+
return parent[x]

Diff for: 10/3.cpp

+53
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
#include <bits/stdc++.h>
2+
3+
using namespace std;
4+
5+
// 노드의 개수(V)와 간선(Union 연산)의 개수(E)
6+
// 노드의 개수는 최대 100,000개라고 가정
7+
int v, e;
8+
int parent[100001]; // 부모 테이블 초기화
9+
10+
// 특정 원소가 속한 집합을 찾기
11+
int findParent(int x) {
12+
// 루트 노드가 아니라면, 루트 노드를 찾을 때까지 재귀적으로 호출
13+
if (x == parent[x]) return x;
14+
return parent[x] = findParent(parent[x]);
15+
}
16+
17+
// 두 원소가 속한 집합을 합치기
18+
void unionParent(int a, int b) {
19+
a = findParent(a);
20+
b = findParent(b);
21+
if (a < b) parent[b] = a;
22+
else parent[a] = b;
23+
}
24+
25+
int main(void) {
26+
cin >> v >> e;
27+
28+
// 부모 테이블상에서, 부모를 자기 자신으로 초기화
29+
for (int i = 1; i <= v; i++) {
30+
parent[i] = i;
31+
}
32+
33+
// Union 연산을 각각 수행
34+
for (int i = 0; i < e; i++) {
35+
int a, b;
36+
cin >> a >> b;
37+
unionParent(a, b);
38+
}
39+
40+
// 각 원소가 속한 집합 출력하기
41+
cout << "각 원소가 속한 집합: ";
42+
for (int i = 1; i <= v; i++) {
43+
cout << findParent(i) << ' ';
44+
}
45+
cout << '\n';
46+
47+
// 부모 테이블 내용 출력하기
48+
cout << "부모 테이블: ";
49+
for (int i = 1; i <= v; i++) {
50+
cout << parent[i] << ' ';
51+
}
52+
cout << '\n';
53+
}

Diff for: 10/3.java

+57
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
import java.util.*;
2+
3+
public class Main {
4+
5+
// 노드의 개수(V)와 간선(Union 연산)의 개수(E)
6+
// 노드의 개수는 최대 100,000개라고 가정
7+
public static int v, e;
8+
public static int[] parent = new int[100001]; // 부모 테이블 초기화하기
9+
10+
// 특정 원소가 속한 집합을 찾기
11+
public static int findParent(int x) {
12+
// 루트 노드가 아니라면, 루트 노드를 찾을 때까지 재귀적으로 호출
13+
if (x == parent[x]) return x;
14+
return parent[x] = findParent(parent[x]);
15+
}
16+
17+
// 두 원소가 속한 집합을 합치기
18+
public static void unionParent(int a, int b) {
19+
a = findParent(a);
20+
b = findParent(b);
21+
if (a < b) parent[b] = a;
22+
else parent[a] = b;
23+
}
24+
25+
public static void main(String[] args) {
26+
Scanner sc = new Scanner(System.in);
27+
28+
v = sc.nextInt();
29+
e = sc.nextInt();
30+
31+
// 부모 테이블상에서, 부모를 자기 자신으로 초기화
32+
for (int i = 1; i <= v; i++) {
33+
parent[i] = i;
34+
}
35+
36+
// Union 연산을 각각 수행
37+
for (int i = 0; i < e; i++) {
38+
int a = sc.nextInt();
39+
int b = sc.nextInt();
40+
unionParent(a, b);
41+
}
42+
43+
// 각 원소가 속한 집합 출력하기
44+
System.out.print("각 원소가 속한 집합: ");
45+
for (int i = 1; i <= v; i++) {
46+
System.out.print(findParent(i) + " ");
47+
}
48+
System.out.println();
49+
50+
// 부모 테이블 내용 출력하기
51+
System.out.print("부모 테이블: ");
52+
for (int i = 1; i <= v; i++) {
53+
System.out.print(parent[i] + " ");
54+
}
55+
System.out.println();
56+
}
57+
}

Diff for: 10/3.py

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# 특정 원소가 속한 집합을 찾기
2+
def find_parent(parent, x):
3+
# 루트 노드가 아니라면, 루트 노드를 찾을 때까지 재귀적으로 호출
4+
if parent[x] != x:
5+
parent[x] = find_parent(parent, parent[x])
6+
return parent[x]
7+
8+
# 두 원소가 속한 집합을 합치기
9+
def union_parent(parent, a, b):
10+
a = find_parent(parent, a)
11+
b = find_parent(parent, b)
12+
if a < b:
13+
parent[b] = a
14+
else:
15+
parent[a] = b
16+
17+
# 노드의 개수와 간선(Union 연산)의 개수 입력 받기
18+
v, e = map(int, input().split())
19+
parent = [0] * (v + 1) # 부모 테이블 초기화하기
20+
21+
# 부모 테이블상에서, 부모를 자기 자신으로 초기화
22+
for i in range(1, v + 1):
23+
parent[i] = i
24+
25+
# Union 연산을 각각 수행
26+
for i in range(e):
27+
a, b = map(int, input().split())
28+
union_parent(parent, a, b)
29+
30+
# 각 원소가 속한 집합 출력하기
31+
print('각 원소가 속한 집합: ', end='')
32+
for i in range(1, v + 1):
33+
print(find_parent(parent, i), end=' ')
34+
35+
print()
36+
37+
# 부모 테이블 내용 출력하기
38+
print('부모 테이블: ', end='')
39+
for i in range(1, v + 1):
40+
print(parent[i], end=' ')

0 commit comments

Comments
 (0)