본문 바로가기
반응형

전체 글252

[백준][Python] 15681번 트리와 쿼리 15681번: 트리와 쿼리 트리의 정점의 수 N과 루트의 번호 R, 쿼리의 수 Q가 주어진다. (2 ≤ N ≤ 105, 1 ≤ R ≤ N, 1 ≤ Q ≤ 105) 이어 N-1줄에 걸쳐, U V의 형태로 트리에 속한 간선의 정보가 주어진다. (1 ≤ U, V ≤ N, U ≠ V) www.acmicpc.net 코드 import sys sys.setrecursionlimit(10**9) def tree(node,par): for i in graph[node]: if i != par: child[node].append(i) parent[i] = node tree(i,node) def count(node): size[node] = 1 for i in child[node]: count(i) size[node] +=.. 2022. 10. 14.
[백준][Python] 11437번 LCA 11437번: LCA 첫째 줄에 노드의 개수 N이 주어지고, 다음 N-1개 줄에는 트리 상에서 연결된 두 정점이 주어진다. 그 다음 줄에는 가장 가까운 공통 조상을 알고싶은 쌍의 개수 M이 주어지고, 다음 M개 줄에는 정 www.acmicpc.net 코드 import sys sys.setrecursionlimit(100000) def dfs(num,dep): visit[num] = 1 d[num] = dep for i in tree[num]: if visit[i] == 1: continue par[i] = num dfs(i,dep+1) def parent(a,b): while d[a] != d[b]: if d[a] < d[b]: b = par[b] else: a = par[a] while a != b: .. 2022. 10. 13.
[백준][Python] 5052번 전화번호 목록 5052번: 전화번호 목록 첫째 줄에 테스트 케이스의 개수 t가 주어진다. (1 ≤ t ≤ 50) 각 테스트 케이스의 첫째 줄에는 전화번호의 수 n이 주어진다. (1 ≤ n ≤ 10000) 다음 n개의 줄에는 목록에 포함되어 있는 전화번호가 www.acmicpc.net 코드 import sys t = int(input()) for _ in range(t): n_list = [] flag = 0 n = int(input()) for _ in range(n): n_list.append(sys.stdin.readline().rstrip()) n_list.sort() for i in range(n-1): if n_list[i+1][:len(n_list[i])] == n_list[i]: flag = -1 brea.. 2022. 10. 12.
[백준][Python] 1967번 트리의 지름 1967번: 트리의 지름 파일의 첫 번째 줄은 노드의 개수 n(1 ≤ n ≤ 10,000)이다. 둘째 줄부터 n-1개의 줄에 각 간선에 대한 정보가 들어온다. 간선에 대한 정보는 세 개의 정수로 이루어져 있다. 첫 번째 정수는 간선이 연 www.acmicpc.net 코드 import sys from collections import deque def dfs(a,l): queue = deque() queue.append((a,l)) while queue: a,l = queue.popleft() for na,nl in graph[a]: if distance[na] == -1: queue.append((na,nl)) distance[na] = distance[a]+nl return distance.index(.. 2022. 10. 11.
[백준][Python] 4963번 섬의 개수 4963번: 섬의 개수 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 지도의 너비 w와 높이 h가 주어진다. w와 h는 50보다 작거나 같은 양의 정수이다. 둘째 줄부터 h개 줄에는 지도 www.acmicpc.net 코드 import sys from collections import deque def bfs(x,y): dx = [-1,-1,-1,0,0,1,1,1] dy = [-1,0,1,-1,1,-1,0,1] queue = deque() queue.append((x,y)) while queue: x,y = queue.popleft() for i in range(8): nx = x + dx[i] ny = y + dy[i] if 0 2022. 10. 7.
[백준][Python] 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 코드 def bfs(i): queue = [] queue.append(i) while queue: num = queue.pop() for a in graph[num]: if visit[a] == 0: visit[a] = 1 queue.append(a) n,m = map(int,input().split()) graph = [[] for _ in range(n+1)] for _ in range(m): u,.. 2022. 10. 6.
[백준][Python] 1012번 유기농 배추 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net 코드 import sys from collections import deque dx = [0,0,-1,1] dy = [-1,1,0,0] def bfs(x,y): queue = deque() queue.append((x,y)) while queue: x,y = queue.popleft() for i in range(4): nx = x + dx[i] ny = y + dy[i] if 0 2022. 10. 5.
[백준][Python] 2178번 미로 탐색 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net 코드 from collections import deque def bfs(x,y): queue = deque() queue.append((x,y)) while queue: x,y = queue.popleft() for i in range(4): # 왼쪽,오른쪽,위,아래 방향 모두 확인 nx = x + x_n[i] ny = y + y_n[i] if nx >= 0 and nx = 0 and ny < m:# 범위를 벗어나지 않고 if maze[nx][ny] == 1:# 이동할 .. 2022. 10. 4.
[백준][Python] 14267번 회사 문화 1 14267번: 회사 문화 1 영선회사에는 매우 좋은 문화가 있는데, 바로 상사가 직속 부하를 칭찬하면 그 부하가 부하의 직속 부하를 연쇄적으로 칭찬하는 내리 칭찬이 있다. 즉, 상사가 한 직속 부하를 칭찬하면 그 부하 www.acmicpc.net 코드 처음에는 칭찬을 받은 직원을 입력받을 때마다 트리를 순회해서 해당 직원의 부하 직원을 모두 찾아 값을 더해줬는데 시간 초과가 났다. import sys from collections import defaultdict def dfs(a,b): visit = [False]*(n+1) queue = [] queue.append(a) while queue: next = queue.pop() if visit[next]: continue visit[next] = Tr.. 2022. 9. 30.
반응형