분류 전체보기(219)
-
3190 - 뱀
from collections import deque from copy import deepcopy N = int(input()) board = [[0]*(N+1) for _ in range(N+1)] K = int(input()) for _ in range(K): x, y = map(int, input().split()) board[x][y] = 1 L = int(input()) timeList = [] direction = [] for _ in range(L): X, C = map(str, input().split()) timeList.append(int(X)) direction.append(C) changetime = timeList.pop(0); changeDir = direction.pop(0)..
2022.05.03 -
13460 - 구슬탈출2*
from collections import deque def bfs(rx,ry,bx,by): cnt = 0 q = deque() visited = [] q.append((rx,ry,bx,by)) visited.append((rx,ry,bx,by)) while q: for _ in range(len(q)): rx,ry,bx,by = q.popleft() if cnt > 10: print(-1) return if graph[rx][ry] == 'O': print(cnt) return for i in range(4): nrx, nry = rx, ry nbx, nby = bx, by while True: nrx += dx[i]; nry += dy[i] if graph[nrx][nry] == "#": nrx -=..
2022.05.03 -
12100 - 2048(Easy)*
from copy import deepcopy def maxNum(board): maxResult = 0 for i in range(N): maxResult = max(maxResult, max(board[i])) return maxResult def move2048(direction, board): #왼쪽 if direction == 0: for i in range(N): pointer = 0 for j in range(1, N): #왼쪽 if board[i][j] != 0: board[i][j] = 0 # [i, j] 앞이 0이라면 앞으로 당겨짐 if board[i][pointer] == 0: board[i][pointer] = tmp # [i, pointer] == [i, j] 이라면 더해서 앞으로..
2022.05.03 -
DFS - 연결 요소의 개수[11724번]
def dfs(idx): if idx in visited: return visited.append(idx) for nextIdx in range(1, len(graph[idx])): if(graph[idx][nextIdx] == 1) and (nextIdx not in visited): dfs(nextIdx) import sys sys.setrecursionlimit(10000) input = sys.stdin.readline N, M = map(int, input().split()) graph = [[0]*(N+1) for _ in range(N+1)] for _ in range(M): a, b = map(int, input().split()) graph[a][b] = 1 graph[b][a] = 1 ..
2022.04.18 -
DFS - DFS와BFS[1260번]
def DFS(loc): visited.append(loc) for idx in range(1, len(graph[loc])): if len(visited) == n: return elif graph[loc][idx] == 1 and idx not in visited: loc = idx DFS(loc) def BFS(loc): queue = [loc] visited2.append(loc) while queue: curCheck = queue.pop(0) for idx in range(1, len(graph[curCheck])): if len(visited2) == n: return elif graph[curCheck][idx] == 1 and (idx not in visited2) and (idx not..
2022.04.17 -
DFS - 바이러스[2606번]
def dfs(i): for idx in range(1, len(graph[i])): if graph[i][idx] == 1 and idx not in visited: visited.append(idx) dfs(idx) n = int(input()) m = int(input()) graph = [[0]*(n+1) for _ in range(n+1)] for _ in range(m): a, b = map(int, input().split()) graph[a][b] = 1 graph[b][a] = 1 visited = [1] dfs(1) print(len(visited)-1) 해당 문제는 DFS 문제로 회귀함수를 이용해 1번을 시작으로 연결된 컴퓨터들을 visited로 기록함으로써 구할 수 있다. -> 1번..
2022.04.09