목록Computer Science (244)
DHistory
문제 13565번: 침투 첫째 줄에는 격자의 크기를 나타내는 M (2 ≤ M ≤ 1,000) 과 N (2 ≤ N ≤ 1,000) 이 주어진다. M줄에 걸쳐서, N개의 0 또는 1 이 공백 없이 주어진다. 0은 전류가 잘 통하는 흰색, 1은 전류가 통하지 않 www.acmicpc.net 풀이 """ 검은색 -> 전류 차단 (1) 흰색 -> 전류 통함 (0) 위쪽에서 전류 공급 상하좌우로 전달 아래쪽까지 전류가 공급될 수 있는지 판단하는 프로그램 """ import sys from collections import deque n, m = map(int, sys.stdin.readline().rstrip().split()) maps = [] for _ in range(n): maps.append(list(ma..
문제 2644번: 촌수계산 사람들은 1, 2, 3, …, n (1 ≤ n ≤ 100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어 www.acmicpc.net 풀이 """ 할아버지 - 아버지 - 나 ㄴ 1촌 ㄱㄴ 1촌 ㄱ ㄴ 2촌 ㄱ 두 사람의 촌수를 계산하는 프로그램 9 (전체 사람의 수) 7 3 (촌수를 계산해야 하는 서로 다른 두 사람의 번호) 7 (부모 자식들 간의 관계의 수) 1 2 1 3 2 7 2 8 2 9 4 5 4 6 1 - 2 - 7 ㄴ 8 ㄴ 9 ㄴ 3 4 - 5 ㄴ 6 친척 관계가 없는 경우 -1 """ import sys from collections import deq..
문제 11725번: 트리의 부모 찾기 루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오. www.acmicpc.net 풀이 """ 1: [4, 6] 2: [4] 3: [5, 6] 4: [1, 2, 7] 5: [3] 6: [1, 3] 1 - 6 - 3 - 5 ㄴ 4 - 2 ㄴ 7 4 6 1 3 1 4 BFS 현재 노드가 부모 노드가 된다. """ import sys from collections import deque n = int(sys.stdin.readline().rstrip()) nodes = [[] for _ in range(n + 1)] for _ in range(n - 1): a, b = map(int, sys.stdin.re..
문제 4963번: 섬의 개수 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 지도의 너비 w와 높이 h가 주어진다. w와 h는 50보다 작거나 같은 양의 정수이다. 둘째 줄부터 h개 줄에는 지도 www.acmicpc.net 풀이 import sys from collections import deque dx = [-1, -1, -1, 0, 1, 1, 1, 0] dy = [1, 0, -1, -1, -1, 0, 1, 1] def solution(graphs, x, y, visited, n, m): if visited[x][y] or not graphs[x][y]: return False queue = deque([(x, y)]) visited[x][y] = True while..
문제 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 from collections import deque n, m = map(int, sys.stdin.readline().rstrip().split()) visited = [False] * (n + 1) graphs = [[] for _ in range(n + 1)] for _ in range(m): a, b = map(int, sys.stdin.readline().rst..
문제 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net 풀이 import sys from collections import deque t = int(sys.stdin.readline().rstrip()) dx = [-1, 0, 1, 0] dy = [0, -1, 0, 1] def solution(graph, x, y, n, m): if graph[x][y] in [0, -1]: return False queue = deque([(x, y)]) graph[x][y] = -1 while queue: x, y = queue.pop..
문제 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 풀이 import sys from collections import deque from copy import deepcopy n, m, v = map(int, sys.stdin.readline().rstrip().split()) graphs = [[] for _ in range(n + 1)] for _ in range(m): a, b = map(int, sys.stdin.readline().rstrip().split()..
문제 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하인 양의 정수이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍 www.acmicpc.net 풀이 import sys from collections import deque n = int(sys.stdin.readline().rstrip()) count = int(sys.stdin.readline().rstrip()) edges = [] visited = [False for _ in range(n + 1)] for _ in range(count): a, b = map(int, sys.stdin.readline().rstrip().split()) edges..
문제 16173번: 점프왕 쩰리 (Small) 쩰리는 맨 왼쪽 위의 칸에서 출발해 (행, 열)로 나타낸 좌표계로, (1, 1) -> (2, 1) -> (3, 1) -> (3, 3)으로 이동해 게임에서 승리할 수 있다. www.acmicpc.net 풀이 import sys n = int(sys.stdin.readline().rstrip()) maps = [] for _ in range(n): lines = list(map(int ,sys.stdin.readline().rstrip().split())) maps.append(lines) dx = [1, 0] dy = [0, 1] visited = [[False for _ in range(n)] for _ in range(n)] def solution(maps..