반응형

파이썬 dfs 18

[파이썬, Python] 백준 21736: 헌내기는 친구가 필요해

문제 https://www.acmicpc.net/problem/21736 21736번: 헌내기는 친구가 필요해 2020년에 입학한 헌내기 도연이가 있다. 도연이는 비대면 수업 때문에 학교에 가지 못해 학교에 아는 친구가 없었다. 드디어 대면 수업을 하게 된 도연이는 어서 캠퍼스 내의 사람들과 친해지고 www.acmicpc.net 코드 import sys sys.setrecursionlimit(10**6) input = sys.stdin.readline n, m = map(int, input().split()) land = [list(input()) for _ in range(n)] visited = [[False for _ in range(m)] for _ in range(n)] dx, dy = [1, ..

[파이썬, Python] 백준 2583: 영역 구하기

문제 https://www.acmicpc.net/problem/2583 2583번: 영역 구하기 첫째 줄에 M과 N, 그리고 K가 빈칸을 사이에 두고 차례로 주어진다. M, N, K는 모두 100 이하의 자연수이다. 둘째 줄부터 K개의 줄에는 한 줄에 하나씩 직사각형의 왼쪽 아래 꼭짓점의 x, y좌표값과 오 www.acmicpc.net 코드 import sys sys.setrecursionlimit(10**7) m, n, k = map(int, input().split()) ans = [] paper = [(list(0 for i in range(n))) for i in range(m)] for _ in range(k): x, y, dx, dy = map(int, input().split()) for i..

[파이썬, Python] 백준 11725: 트리의 부모 찾기

문제 https://www.acmicpc.net/problem/11725 11725번: 트리의 부모 찾기 루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오. www.acmicpc.net 코드 import sys sys.setrecursionlimit(10**7) input = sys.stdin.readline n = int(input()) tree = [[] for _ in range(n+1)] parents = [0 for _ in range(n+1)] for _ in range(n-1): a, b = map(int, input().split()) tree[a].append(b) tree[b].append(a) def dfs(start..

[파이썬, Python] 백준 2468: 안전 영역

문제 https://www.acmicpc.net/problem/2468 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net 코드 import copy import sys sys.setrecursionlimit(10**6) n = int(input()) land = list(list(map(int, input().split())) for i in range(n)) ans = [] dx = [1, -1, 0, 0] dy = [0, 0, 1, -1] def dfs(x, y): new_land[x][y] = 0 for i in..

[파이썬, Python] 백준 4963: 섬의 개수

문제 https://www.acmicpc.net/problem/4963 4963번: 섬의 개수 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 지도의 너비 w와 높이 h가 주어진다. w와 h는 50보다 작거나 같은 양의 정수이다. 둘째 줄부터 h개 줄에는 지도 www.acmicpc.net 코드 import sys sys.setrecursionlimit(10**6) dx = [1, 1, -1, -1, 1, -1, 0, 0] dy = [0, 1, 0, 1, -1, -1, 1, -1] def dfs(x, y): land[x][y] = 0 for i in range(8): nx = x + dx[i] ny = y + dy[i] if 0

[파이썬, Python] 백준 6603: 로또

문제 https://www.acmicpc.net/problem/6603 6603번: 로또 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 번째 수는 k (6 < k < 13)이고, 다음 k개 수는 집합 S에 포함되는 수이다. S의 원소는 오름차순으로 www.acmicpc.net 코드 from collections import deque while True: nums = deque(map(int, input().split())) k = nums.popleft() if k == 0: break s = [] def dfs(): if len(s) == 6: print(' '.join(map(str,s))) return for i in sorted(nums): i..

[파이썬, Python] 백준 10974: 모든 순열

문제 https://www.acmicpc.net/problem/10974 10974번: 모든 순열 N이 주어졌을 때, 1부터 N까지의 수로 이루어진 순열을 사전순으로 출력하는 프로그램을 작성하시오. www.acmicpc.net 코드 n = int(input()) s = [] def dfs(): if len(s) == n: print(' '.join(map(str,s))) return for i in range(1, n+1): if i not in s: s.append(i) dfs() s.pop() dfs() 설명 https://looancheong.tistory.com/147 [파이썬, Python] 백준 15649: N과 M (1) 문제 https://www.acmicpc.net/problem/1564..

[파이썬, Python] 백준 9372: 상근이의 여행

문제 https://www.acmicpc.net/problem/9372 9372번: 상근이의 여행 첫 번째 줄에는 테스트 케이스의 수 T(T ≤ 100)가 주어지고, 각 테스트 케이스마다 다음과 같은 정보가 주어진다. 첫 번째 줄에는 국가의 수 N(2 ≤ N ≤ 1 000)과 비행기의 종류 M(1 ≤ M ≤ 10 000) 가 www.acmicpc.net 코드 import sys input = sys.stdin.readline sys.setrecursionlimit(10**9) def dfs(idx, cnt): visited[idx] = 1 for i in graph[idx]: if visited[i] == 0: cnt = dfs(i, cnt+1) return cnt t = int(input()) for ..

[파이썬, Python] 백준 2644: 촌수계산

문제 https://www.acmicpc.net/problem/2644 2644번: 촌수계산 사람들은 1, 2, 3, …, n (1 ≤ n ≤ 100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어 www.acmicpc.net 코드 import sys sys.setrecursionlimit(10**7) n = int(input()) a, b = map(int, input().split()) m = int(input()) graph = [[] for _ in range(n+1)] visited = [False] * (n+1) res = list() for _ in range(m): x, y = m..

[파이썬, Python] 백준 11724: 연결 요소의 개수

문제 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 input = sys.stdin.readline sys.setrecursionlimit(10**7) cnt = 0 n, m = map(int, input().split()) graph = [[] for _ in range(n+1)] visited = [False] * (n+1) for _ in range(..

반응형