Algorithm

Algorithm/백준(파이썬)

백준 11725 파이썬(Python) 문제풀이 트리의 부모 찾기

문제링크:https://www.acmicpc.net/problem/11725 11725번: 트리의 부모 찾기 루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오. www.acmicpc.net 다루는 주제: DFS import sys sys.setrecursionlimit(10**6) N = int(sys.stdin.readline()) tree = [[] for _ in range(N + 1)] parent = [0] * (N + 1) for _ in range(N - 1): # 간선의 갯수 = 노드 개수 - 1 a, b = map(int, sys.stdin.readline().split()) tree[a].append(b) tree[b]..

Algorithm/백준(파이썬)

백준 2178 파이썬(Python) 문제풀이 미로탐색

문제링크:https://www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net 다루는 주제: BFS import sys from collections import deque N, M = map(int, sys.stdin.readline().split()) maze = [] # 미로 받기 for i in range(N): maze.append(list(map(int, sys.stdin.readline().strip()))) # 갈수있는 상하좌우 d = [[1, 0], [0, 1], [-1, 0], ..

Algorithm/백준(파이썬)

백준 2606 파이썬(Python) 문제풀이 바이러스

문제링크:https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net 다루는 주제: 그래프 탐색 import sys N = int(sys.stdin.readline()) # N은 컴퓨터의 개수 M = int(sys.stdin.readline()) # M은 간선의 개수 matrix = [[0] * (N + 1) for _ in range(N + 1)] # 영행렬 virus = [0] * (N + 1) count = 0 for _ in range(M): a, b =..

Algorithm/백준(파이썬)

백준 5639 파이썬(Python) 문제풀이 이진 검색 트리

문제링크:https://www.acmicpc.net/problem/5639 5639번: 이진 검색 트리 트리를 전위 순회한 결과가 주어진다. 노드에 들어있는 키의 값은 106보다 작은 양의 정수이다. 모든 값은 한 줄에 하나씩 주어지며, 노드의 수는 10,000개 이하이다. 같은 키를 가지는 노드는 없다 www.acmicpc.net 다루는 주제: 그래프 탐색 # 이진트리를 전위탐색할시에 부모 노드값은 배열 [0] 이고 부모노드값보다 커지는 숫자가 나올때까지 왼쪽 서브트리 그 이후엔 오른쪽 서브 트리다. # 전위 탐색은 부모노드 -> 왼쪽 자식 -> 오른쪽 자식 후위 탐색은 왼쪽 -> 오른쪽 -> 부모노드 순이다. import sys sys.setrecursionlimit(10 ** 9) input = s..

Algorithm/백준(파이썬)

백준 11724 파이썬(Python) 문제풀이 연결 요소의 개수

문제링크:https://www.acmicpc.net/problem/11724 11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주 www.acmicpc.net 다루는 주제: 그래프 탐색 import sys N, M = map(int, sys.stdin.readline().split()) matrix = [[0] * (N + 1) for _ in range(N + 1)] visit = [False] * (N + 1) count = 0 for _ in range(M): u, v = ma..

Algorithm/백준(파이썬)

백준 1260 파이썬(Python) 문제풀이 DFS와 BFS

문제링크:https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 다루는 주제: 그래프 탐색 import sys # N은 정점의 개수 M은 간선의 개수, V는 탐색을 시작할 정점의 번호 N, M, V = map(int, sys.stdin.readline().split()) matrix = [[0] * (N + 1) for _ in range(N + 1)] # 인접영 행렬 visit = [0] * (N + 1) # 방..

Algorithm/백준(파이썬)

백준 1997 파이썬(Python) 문제풀이 최소 스패닝 트리

문제링크:https://www.acmicpc.net/problem/1197 1197번: 최소 스패닝 트리 첫째 줄에 정점의 개수 V(1 ≤ V ≤ 10,000)와 간선의 개수 E(1 ≤ E ≤ 100,000)가 주어진다. 다음 E개의 줄에는 각 간선에 대한 정보를 나타내는 세 정수 A, B, C가 주어진다. 이는 A번 정점과 B번 정점이 www.acmicpc.net 다루는 주제: 그래프 탐색 import sys def find(parent, x): # 부모노드 비교 if parent[x] != x: parent[x] = find(parent, parent[x]) return parent[x] def union(parent, a, b): # 합치면서 부모노드가 더 작은쪽으로 부모를 바꿔 a = find(p..

Algorithm/백준(파이썬)

백준 1991 파이썬(Python) 문제풀이 트리순회

문제링크:https://www.acmicpc.net/problem/1991 1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파 www.acmicpc.net 다루는 주제: 그래프탐색 import sys N = int(sys.stdin.readline()) tree = {} for _ in range(N): root, left, right = sys.stdin.readline().strip().split() tree[root] = [left, right] def preorder(root): if root != ".": print(ro..

김상주
'Algorithm' 카테고리의 글 목록 (3 Page)