목록algorithm (61)
현제의 현재이야기
import sys sys.setrecursionlimit(10**6) input = sys.stdin.readline graph = [] for _ in range(5): arr = list(map(int, input().split())) graph.append(arr) result_set = set() def dfs(i, j, result): result += str(graph[i][j]) if len(result) == 6: result_set.add(result) return dx, dy = [1, 0, -1, 0], [0, -1, 0, 1] for d in range(4): x = i + dx[d] y = j + dy[d] if 0
n, m = tuple(map(int, input().split())) order = [ int(input()) for _ in range(n) ] dice = [ int(input()) for _ in range(m) ] pointer = 0 cnt = 0 for i in dice: cnt += 1 pointer += i if pointer >= n - 1: print(cnt) break pointer += order[pointer] if pointer >= n - 1: print(cnt) break 알고리즘 : 1. pointer를 만들고 주사위가 나오는 숫자를 더해주고, 한번 검사 (검사하지 않으면 두번째 테케에서 인덱스 오류남) 2. 그리고 포인터가 n - 1 보다 작으면 포인터에 현재 있는 칸의..
저번에 연결요소와 같은 그래프 탐색 문제이다. 백준 풀다가 dfs의 감을 다시 잡기 위해서 기본 개념문제를 풀어보았다. 1에서 부터 탐색을 시행했을 때, 1으로 부터 시작된 서로 다른 연결 요소의 개수를 물어보는 문제. n, m = tuple(map(int, input().split())) graph = [ [] for _ in range(n + 1) ] visited = [False] * (n + 1) for _ in range(m): x, y = tuple(map(int, input().split())) graph[x].append(y) graph[y].append(x) cnt = 0 def dfs(v): global cnt visited[v] = True for i in graph[v]: if vi..
n, m = tuple(map(int, input().split())) input_a = list(input()) a = [] for _ in range(n): a.append(input_a.pop()) b = list(input()) t = int(input()) arr = a + b check = n * '0' + m * '1' + '9' check_arr = [] target = [] for i in check: check_arr.append(i) for _ in range(t): for i in range(n + m): if check_arr[i] == '0' and check_arr[i + 1] == '1': target.append(i) for j in target: arr[j], arr[j ..
import sys def dfs(node, cnt): check[node] = 1 for n in graph[node]: if check[n] == 0: cnt = dfs(n, cnt+1) return cnt for _ in range(int(sys.stdin.readline())): N, M = map(int, sys.stdin.readline().split()) graph = [[] for _ in range(N+1)] for _ in range(M): u, v = map(int, sys.stdin.readline().split()) graph[u].append(v) graph[v].append(u) check = [0]*(N+1) check[1] = 0 cnt = dfs(1, 0) print(cn..
import sys sys.setrecursionlimit(10**7) input = sys.stdin.readline n, m = map(int, input().split()) graph = [[] for _ in range(n+1)] visited = [False] * (n+1) for _ in range(m): x, y = map(int, input().split()) graph[x].append(y) graph[y].append(x) def dfs(v): visited[v] = True for i in graph[v]: if visited[i] == False: visited[i] = True dfs(i) count = 0 for i in range(1, n+1): if visited[i] == ..