알고리즘 (17) 썸네일형 리스트형 [SWEA] 그래프 경로 (Python) T = int(input()) for test_case in range(1, T + 1): v, e = map(int, input().split()) g = [[] for _ in range(v+1)] visited = [] for i in range(e): a, b = map(int, input().split()) g[a].append(b) start, end = map(int, input().split()) tovisit=[start] while tovisit: a=tovisit.pop() visited.append(a) for i in g[a]: if i not in visited: tovisit.append(i) if end in visited: print('#{} {}'.format(test_c.. [SWEA] 반복문자 지우기 (Python) T = int(input()) for test_case in range(1, T + 1): sen = list(input()) stack = [] for i in sen : if not stack : stack.append(i) continue if stack[-1] == i: stack.pop() else : stack.append(i) print('#{} {}'.format(test_case, len(stack))) [백준] 2606. 바이러스 (Python) www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net -풀이 com_n = int(input()) con_n = int(input()) g = [[] for i in range(com_n+1)] visited =[] for i in range(con_n): a, b = map(int, input().split()) g[a].append(b) g[b].append(a) tovisit = [1] while tovisit: a = tovisit.pop() visited.ap.. [백준] 2667. 단지번호붙이기 (DFS/Python) -풀이 n = int(input()) map_n = [] dx = [-1, 1, 0, 0] dy = [0, 0, 1, -1] for i in range(n): map_n.append(list(input())) dan = 0 con_list = [] for i in range(n): for j in range(n): if map_n[i][j] == '1' : dan += 1 stack = [(i, j)] map_n[i][j] = 0 count = 1 while stack : a, b = stack.pop() for k in range(4): to_x = a + dx[k] to_y = b + dy[k] if to_x >= 0 and to_y >= 0 and to_x < n and to_y < n : if m.. [SWEA] 5097. 회전 (Python) -풀이 T = int(input()) for test_case in range(1, T + 1): n, m = map(int, input().split()) queue = list(map(int, input().split())) for i in range(m): queue.append(queue.pop(0)) print('#{} {}'.format(test_case, queue[0])) deque 모듈을 import해서도 구현이 가능하다. [백준] 2589. 보물섬 (Python) PyPy3로 돌려야 시간초과가 나지 않는다. -풀이 from collections import deque n, m = map(int, input().split()) maps = [list(input()) for _ in range(n)] max_len = 0 dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] queue = deque() def BFS(i, j): queue.append([i,j]) visited = [[0] * m for _ in range(n)] max_value = 0 visited[i][j] = 1 while queue: x, y = queue.popleft() for a in range(4): nx = x + dx[a] ny = y + dy[a] if n > nx.. [백준] 7576. 토마토 (Python) -문제링크 www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net -풀이 from collections import deque dx = [-1, 1, 0, 0] dy = [0, 0, 1, -1] m, n = map(int, input().split()) maps = [list(map(int,input().split())) for _ in range(n)] q = deque() for i in range(n): for j in range(m): if .. [백준] 1260. DFS와 BFS (Python) -문제 링크 https://www.acmicpc.net/problem/1260 -풀이 from collections import deque n, m, v = map(int, input().split()) maps = [[0]*(n+1) for _ in range(n+1)] for i in range(m): a, b = map(int, input().split()) maps[a][b] = 1 maps[b][a] = 1 def dfs(v, visited): visited.append(v) for i in range(n+1): if maps[v][i] == 1 and (i not in visited): dfs(i, visited) return visited def bfs(v) : q = deque() visi.. 이전 1 2 3 다음 목록 더보기