From 387dedaf88c8b229a6012d0c21a2f8a870c30be9 Mon Sep 17 00:00:00 2001 From: 5thofnovmbr <5thofnovmbr@gmail.com> Date: Sun, 28 Feb 2021 05:09:38 +0900 Subject: [PATCH 1/6] 9093 5thofnovmbr --- baekjoon/9093/5thofnovmbr/9093.cpp | 66 ++++++++++++++++++++++ baekjoon/9093/5thofnovmbr/time_memory.png | Bin 0 -> 9866 bytes 2 files changed, 66 insertions(+) create mode 100644 baekjoon/9093/5thofnovmbr/9093.cpp create mode 100644 baekjoon/9093/5thofnovmbr/time_memory.png diff --git a/baekjoon/9093/5thofnovmbr/9093.cpp b/baekjoon/9093/5thofnovmbr/9093.cpp new file mode 100644 index 0000000..793a47f --- /dev/null +++ b/baekjoon/9093/5thofnovmbr/9093.cpp @@ -0,0 +1,66 @@ +#include +#include + +#define LINE 1000 + +char* reverse(int); + +char* st; + +int main(void) { + int t; + int i; + + scanf("%d", &t); + getchar(); + + st = (char*)malloc(sizeof(char) * LINE * t); + // ͸ 2 迭 Ȱ + + for (i = 0; i < t; i++) + { + scanf("%[^\n]s", st + (LINE * i)); + //  ؼ Է + getchar(); + // getchar ͸ ϰ DZ ֱ + + } + + for (i = 0; i < t; i++) + { + if (i == t - 1) + { + printf("%s", reverse(i)); + break; + } + printf("%s\n", reverse(i)); + } + + return 0; +} + +char* reverse(int seq) +{ + int space = 0, preSpace=0; + char temp[LINE] = {0,}; + seq *= LINE; + + for (int i = 0; i < LINE; i++) + { + if((st+ seq)[i] == ' ' || (st + seq)[i] ==0x00) + { + space = i - preSpace; + //  ϱ + for (int j = space; j > 0; j--) + { + temp[i - j] = (st + seq)[preSpace+j-1]; + //  ġ  ġ ̿ ܾ + } + temp[i] = (st + seq)[i]; + preSpace = i+1; + } + } + return temp; +} + +// ͸ ϱ, ִ° ó ˰ Ǿ. \ No newline at end of file diff --git a/baekjoon/9093/5thofnovmbr/time_memory.png b/baekjoon/9093/5thofnovmbr/time_memory.png new file mode 100644 index 0000000000000000000000000000000000000000..cc0f631bcfebfc61d88246578c441cf23db5cf09 GIT binary patch literal 9866 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 literal 0 HcmV?d00001 From 19b784f23e420778f92928fbad4ff591b07eb953 Mon Sep 17 00:00:00 2001 From: com5036 Date: Sat, 9 Oct 2021 20:28:34 +0900 Subject: [PATCH 2/6] Solve 1197 --- baekjoon/1197/README.md | 13 ++++++++ baekjoon/1197/com5036/1197.py | 57 +++++++++++++++++++++++++++++++++ baekjoon/1197/com5036/README.md | 3 ++ 3 files changed, 73 insertions(+) create mode 100644 baekjoon/1197/README.md create mode 100644 baekjoon/1197/com5036/1197.py create mode 100644 baekjoon/1197/com5036/README.md diff --git a/baekjoon/1197/README.md b/baekjoon/1197/README.md new file mode 100644 index 0000000..c2fe869 --- /dev/null +++ b/baekjoon/1197/README.md @@ -0,0 +1,13 @@ +#[1197](https://www.acmicpc.net/problem/1197) +##문제 +그래프가 주어졌을 때, 그 그래프의 최소 스패닝 트리를 구하는 프로그램을 작성하시오. + +최소 스패닝 트리는, 주어진 그래프의 모든 정점들을 연결하는 부분 그래프 중에서 그 가중치의 합이 최소인 트리를 말한다. + +##입력 +첫째 줄에 정점의 개수 V(1 ≤ V ≤ 10,000)와 간선의 개수 E(1 ≤ E ≤ 100,000)가 주어진다. 다음 E개의 줄에는 각 간선에 대한 정보를 나타내는 세 정수 A, B, C가 주어진다. 이는 A번 정점과 B번 정점이 가중치 C인 간선으로 연결되어 있다는 의미이다. C는 음수일 수도 있으며, 절댓값이 1,000,000을 넘지 않는다. + +그래프의 정점은 1번부터 V번까지 번호가 매겨져 있고, 임의의 두 정점 사이에 경로가 있다. 최소 스패닝 트리의 가중치가 -2,147,483,648보다 크거나 같고, 2,147,483,647보다 작거나 같은 데이터만 입력으로 주어진다. + +##출력 +첫째 줄에 최소 스패닝 트리의 가중치를 출력한다. \ No newline at end of file diff --git a/baekjoon/1197/com5036/1197.py b/baekjoon/1197/com5036/1197.py new file mode 100644 index 0000000..8592d9b --- /dev/null +++ b/baekjoon/1197/com5036/1197.py @@ -0,0 +1,57 @@ +import collections +import sys + + +def union(a, b): + a = get_parent(a) + b = get_parent(b) + + if a < b: + parent[b] = a + else: + parent[a] = b + + +def get_parent(x): + if parent[x] == x: + return x + else: + parent[x] = get_parent(parent[x]) + return parent[x] + + +def is_same_parent(a, b): + if get_parent(a) == get_parent(b): + return True + else: + return False + + +V, E = map(int, sys.stdin.readline().split()) + +# 입력받은 정보들을 weight 기준으로 정렬 +node_list = [] +for i in range(E): + v1, v2, weight = map(int, sys.stdin.readline().split()) + node = (v1, v2, weight) + node_list.append(node) + +node_list = sorted(node_list, key=lambda x: x[2]) + +# 각 노드들의 parent 정보 +parent = [x for x in range(V + 1)] + +# weight가 작은 순으로 노드를 cycle이 생기지 않는선에서 연결 +# score 값 누적 +# cycle 이 생기면 건너뛰고 모든 노드를 연결하면 종료 +score = 0 +for i in range(E): + v1 = node_list[i][0] + v2 = node_list[i][1] + w = node_list[i][2] + + if not is_same_parent(v1, v2): + score += w + union(v1, v2) + +print(score) diff --git a/baekjoon/1197/com5036/README.md b/baekjoon/1197/com5036/README.md new file mode 100644 index 0000000..98cf9a7 --- /dev/null +++ b/baekjoon/1197/com5036/README.md @@ -0,0 +1,3 @@ +|제출 번호|아이디|문제|결과|메모리|시간|언어|코드길이| +|:---|:---|:---|:---|:---|:---|:---|:---| +|34240392|qkrwl5036|1197|맞았습니다!!|50424KB|392ms|Python 3|897B| \ No newline at end of file From 5f7716aaec470de41be31fdee89232c29d56eb10 Mon Sep 17 00:00:00 2001 From: com5036 Date: Sun, 10 Oct 2021 03:29:47 +0900 Subject: [PATCH 3/6] Solve 1922 --- baekjoon/1922/README.md | 16 ++++++++++ baekjoon/1922/com5036/1922.py | 58 +++++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 baekjoon/1922/README.md create mode 100644 baekjoon/1922/com5036/1922.py diff --git a/baekjoon/1922/README.md b/baekjoon/1922/README.md new file mode 100644 index 0000000..23e0653 --- /dev/null +++ b/baekjoon/1922/README.md @@ -0,0 +1,16 @@ +#[1922](https://www.acmicpc.net/problem/1922) + +## 문제 +도현이는 컴퓨터와 컴퓨터를 모두 연결하는 네트워크를 구축하려 한다. 하지만 아쉽게도 허브가 있지 않아 컴퓨터와 컴퓨터를 직접 연결하여야 한다. 그런데 모두가 자료를 공유하기 위해서는 모든 컴퓨터가 연결이 되어 있어야 한다. (a와 b가 연결이 되어 있다는 말은 a에서 b로의 경로가 존재한다는 것을 의미한다. a에서 b를 연결하는 선이 있고, b와 c를 연결하는 선이 있으면 a와 c는 연결이 되어 있다.) + +그런데 이왕이면 컴퓨터를 연결하는 비용을 최소로 하여야 컴퓨터를 연결하는 비용 외에 다른 곳에 돈을 더 쓸 수 있을 것이다. 이제 각 컴퓨터를 연결하는데 필요한 비용이 주어졌을 때 모든 컴퓨터를 연결하는데 필요한 최소비용을 출력하라. 모든 컴퓨터를 연결할 수 없는 경우는 없다. + +## 입력 +첫째 줄에 컴퓨터의 수 N (1 ≤ N ≤ 1000)가 주어진다. + +둘째 줄에는 연결할 수 있는 선의 수 M (1 ≤ M ≤ 100,000)가 주어진다. + +셋째 줄부터 M+2번째 줄까지 총 M개의 줄에 각 컴퓨터를 연결하는데 드는 비용이 주어진다. 이 비용의 정보는 세 개의 정수로 주어지는데, 만약에 a b c 가 주어져 있다고 하면 a컴퓨터와 b컴퓨터를 연결하는데 비용이 c (1 ≤ c ≤ 10,000) 만큼 든다는 것을 의미한다. a와 b는 같을 수도 있다. + +## 출력 +모든 컴퓨터를 연결하는데 필요한 최소비용을 첫째 줄에 출력한다. \ No newline at end of file diff --git a/baekjoon/1922/com5036/1922.py b/baekjoon/1922/com5036/1922.py new file mode 100644 index 0000000..0c61c8e --- /dev/null +++ b/baekjoon/1922/com5036/1922.py @@ -0,0 +1,58 @@ +import sys + + +# 노드의 부모를 반환 +def get_parent(x): + if x == parent[x]: + return parent[x] + else: + parent[x] = get_parent(parent[x]) + return parent[x] + + +# 두 노드를 연결 +def union(a, b): + a = get_parent(a) + b = get_parent(b) + + if a < b: + parent[b] = a + else: + parent[a] = b + + +# 같은 그래프에 있는지 +def is_same_network(a, b): + if get_parent(a) == get_parent(b): + return True + return False + + +N = int(sys.stdin.readline()) # 컴퓨터의 수 +M = int(sys.stdin.readline()) # 연결할 수 있는 선의 수 +parent = [i for i in range(N + 1)] # 각 노드의 부모 + +# 연결할 정보들을 입력 받음 +network = [] +for _ in range(M): + com1, com2, cost = map(int, sys.stdin.readline().split()) + network.append((com1, com2, cost)) + +# 비용이 낮은 순으로 정렬 +network = sorted(network, key=lambda x: x[2]) + +# 낮은 비용부터 연결 하면서 비용을 누적 +min_cost = 0 +for i in range(M): + com1 = network[i][0] + com2 = network[i][1] + cost = network[i][2] + + # cycle 이 생기면 건너뜀 + if is_same_network(com1, com2): + continue + + union(com1, com2) + min_cost += cost + +print(min_cost) From e890180da85f7d87f3b7324c41c8e151c206a9ce Mon Sep 17 00:00:00 2001 From: Jiseong <77661228+com5036@users.noreply.github.com> Date: Sun, 10 Oct 2021 13:02:49 +0900 Subject: [PATCH 4/6] Update README.md --- baekjoon/1922/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/baekjoon/1922/README.md b/baekjoon/1922/README.md index 23e0653..8cfaa5c 100644 --- a/baekjoon/1922/README.md +++ b/baekjoon/1922/README.md @@ -1,4 +1,4 @@ -#[1922](https://www.acmicpc.net/problem/1922) +# [1922](https://www.acmicpc.net/problem/1922) ## 문제 도현이는 컴퓨터와 컴퓨터를 모두 연결하는 네트워크를 구축하려 한다. 하지만 아쉽게도 허브가 있지 않아 컴퓨터와 컴퓨터를 직접 연결하여야 한다. 그런데 모두가 자료를 공유하기 위해서는 모든 컴퓨터가 연결이 되어 있어야 한다. (a와 b가 연결이 되어 있다는 말은 a에서 b로의 경로가 존재한다는 것을 의미한다. a에서 b를 연결하는 선이 있고, b와 c를 연결하는 선이 있으면 a와 c는 연결이 되어 있다.) @@ -13,4 +13,4 @@ 셋째 줄부터 M+2번째 줄까지 총 M개의 줄에 각 컴퓨터를 연결하는데 드는 비용이 주어진다. 이 비용의 정보는 세 개의 정수로 주어지는데, 만약에 a b c 가 주어져 있다고 하면 a컴퓨터와 b컴퓨터를 연결하는데 비용이 c (1 ≤ c ≤ 10,000) 만큼 든다는 것을 의미한다. a와 b는 같을 수도 있다. ## 출력 -모든 컴퓨터를 연결하는데 필요한 최소비용을 첫째 줄에 출력한다. \ No newline at end of file +모든 컴퓨터를 연결하는데 필요한 최소비용을 첫째 줄에 출력한다. From c4177b3486d0c846de793c4a7396bbbf5ed6ae81 Mon Sep 17 00:00:00 2001 From: com5036 Date: Sat, 16 Oct 2021 20:41:37 +0900 Subject: [PATCH 5/6] Sovle 15649, 15650 --- baekjoon/15649/README.md | 13 +++++++++++++ baekjoon/15649/com5036/15649.py | 25 +++++++++++++++++++++++++ baekjoon/15649/com5036/README.md | 0 baekjoon/15650/README.md | 20 ++++++++++++++++++++ baekjoon/15650/com5036/15657.py | 28 ++++++++++++++++++++++++++++ 5 files changed, 86 insertions(+) create mode 100644 baekjoon/15649/README.md create mode 100644 baekjoon/15649/com5036/15649.py create mode 100644 baekjoon/15649/com5036/README.md create mode 100644 baekjoon/15650/README.md create mode 100644 baekjoon/15650/com5036/15657.py diff --git a/baekjoon/15649/README.md b/baekjoon/15649/README.md new file mode 100644 index 0000000..9dfb337 --- /dev/null +++ b/baekjoon/15649/README.md @@ -0,0 +1,13 @@ +# [15649](https://www.acmicpc.net/problem/15649) +# N과 M (1) +## 문제 +자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. + +1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열 +## 입력 +첫째 줄에 자연수 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8) + +## 출력 +한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. + +수열은 사전 순으로 증가하는 순서로 출력해야 한다. \ No newline at end of file diff --git a/baekjoon/15649/com5036/15649.py b/baekjoon/15649/com5036/15649.py new file mode 100644 index 0000000..dc83bc6 --- /dev/null +++ b/baekjoon/15649/com5036/15649.py @@ -0,0 +1,25 @@ +import sys + +N, M = map(int, sys.stdin.readline().split()) +arr = [i for i in range(1, N + 1)] +visit = [False] * N +result = [] + + +def dfs(x): + if x == M: + print(*result) + return + + for i in range(N): + if visit[i]: + continue + + visit[i] = True + result.append(arr[i]) + dfs(x + 1) + + result.pop() + visit[i] = False + +dfs(0) \ No newline at end of file diff --git a/baekjoon/15649/com5036/README.md b/baekjoon/15649/com5036/README.md new file mode 100644 index 0000000..e69de29 diff --git a/baekjoon/15650/README.md b/baekjoon/15650/README.md new file mode 100644 index 0000000..13f8a8f --- /dev/null +++ b/baekjoon/15650/README.md @@ -0,0 +1,20 @@ +# [15657](https://www.acmicpc.net/problem/15657) + +# N과 M (8) + +## 문제 +N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. + +N개의 자연수 중에서 M개를 고른 수열 +같은 수를 여러 번 골라도 된다. +고른 수열은 비내림차순이어야 한다. +길이가 K인 수열 A가 A1 ≤ A2 ≤ ... ≤ AK-1 ≤ AK를 만족하면, 비내림차순이라고 한다. +## 입력 +첫째 줄에 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8) + +둘째 줄에 N개의 수가 주어진다. 입력으로 주어지는 수는 10,000보다 작거나 같은 자연수이다. + +## 출력 +한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. + +수열은 사전 순으로 증가하는 순서로 출력해야 한다. \ No newline at end of file diff --git a/baekjoon/15650/com5036/15657.py b/baekjoon/15650/com5036/15657.py new file mode 100644 index 0000000..f8e808d --- /dev/null +++ b/baekjoon/15650/com5036/15657.py @@ -0,0 +1,28 @@ +import sys + +N, M = map(int, sys.stdin.readline().split()) + +arr = list(map(int, sys.stdin.readline().split())) +arr = sorted(arr) + +result = [] + + +def dfs(x): + if x == M: + print(*result) + return + + for i in range(N): + try: + if result[-1] > arr[i]: + continue + except IndexError: + pass + + result.append(arr[i]) + dfs(x + 1) + result.pop() + + +dfs(0) From 423a653c28a6283bdfb2fae6303e23f4d1daef9e Mon Sep 17 00:00:00 2001 From: com5036 Date: Sun, 31 Oct 2021 16:25:30 +0900 Subject: [PATCH 6/6] Solve 1789, 2110 --- baekjoon/1789/com5036/1789.py | 15 +++++++++++++++ baekjoon/2110/com5036/2110.py | 29 +++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 baekjoon/1789/com5036/1789.py create mode 100644 baekjoon/2110/com5036/2110.py diff --git a/baekjoon/1789/com5036/1789.py b/baekjoon/1789/com5036/1789.py new file mode 100644 index 0000000..f783049 --- /dev/null +++ b/baekjoon/1789/com5036/1789.py @@ -0,0 +1,15 @@ +import sys + +S = int(sys.stdin.readline()) + +i = 0 +while True: + S -= i + + if S <= i: + S += i + break + + i += 1 + +print(i) diff --git a/baekjoon/2110/com5036/2110.py b/baekjoon/2110/com5036/2110.py new file mode 100644 index 0000000..3b37cea --- /dev/null +++ b/baekjoon/2110/com5036/2110.py @@ -0,0 +1,29 @@ +import sys + +house_N, router_N = map(int, sys.stdin.readline().split()) + +houses_pos = [int(sys.stdin.readline()) for i in range(house_N)] +houses_pos.sort() + +min_gap = 1 +max_gap = houses_pos[-1] - houses_pos[0] + +result = 0 + +while min_gap <= max_gap: + mid = (min_gap + max_gap) // 2 + router_count = 1 + + cur = houses_pos[0] + for i in range(1, len(houses_pos)): + if cur + mid <= houses_pos[i]: + router_count += 1 + cur = houses_pos[i] + + if router_count < router_N: + max_gap = mid - 1 + else: # router_count >= router_N + min_gap = mid + 1 + result = mid # router_count == router_N 일 경우 간격을 늘리려다가 다음에 while 문이 종료 될 수도 있으므로 임시저장 + +print(result)