본문 바로가기

Algorithm/BFS, DFS33

[백준] 1967번 숨바꼭질 처음 코드는 너무 성능이 느렸는데 개선해서 굉장히 빨라졌다.. 약간 for문을 다양하게 쓰는 방법을 익힌거 같아서 기분이 좋고 좀 더 개선이 가능할 것으로 생각되서 개선은 내일.. # 1697 from collections import deque LIMIT = 100001 N, K = map(int, input().split()) def find(): counter = 0 que = deque([N]) qc = deque([0]) while que: temp = que.popleft() counter = qc.popleft() if temp == K: break for nx in (temp+1, temp-1, temp*2): if 0 2020. 9. 15.
[백준] 4963번 섬의 개수 굉장히 쉬운 문제.. 푸는데 20분도 안걸림... # 4963번 from queue import Queue import sys direction = [[-1, 0], [1, 0], [0, 1], [0, -1], [-1, -1], [1, 1], [-1, 1], [1, -1]] def bfs(x, y): que = Queue() que.put([x, y]) visited[x][y] = 1 while not que.empty(): tx, ty = que.get() for i in range(len(direction)): nx = tx + direction[i][0] ny = ty + direction[i][1] if 0 2020. 9. 14.
[백준] 7576번 토마토 몇일전에 모양만 따놨는데 안되서 고통받다가.. 어떻게 풀었는데 시간초과 떠서 고통받다가... 필요없는 프로세스 싹다 지우고 코드 간략화해서 성공... ㅠㅠ 점점 어려워진다.. 아닌가.. 아니 뭔가 알꺼같은데 어렵다.. 근데 막상 풀고 나면 쉽다.. # 7576번 from collections import deque import sys x, y = map(int, input().split()) direction = [[-1, 0], [1, 0], [0, 1], [0, -1]] mapData = [[0] * x for _ in range(y)] def bfs(tQ): counter = -1 while tQ: counter += 1 for _ in range(len(tQ)): tx, ty = tQ.poplef.. 2020. 9. 14.
[ 백준] 2606번 바이러스 이 문제도 너무 쉬운 문제.. from collections import deque def bfs(graph): visited = [] que = deque([1]) while que: t = que.popleft() if t in visited: continue if not t in visited: visited.append(t) que.extend(sorted(graph[t])) if len(visited) == 1: return 1 else: return len(visited) - 1 N = int(input()) M = int(input()) graph = [set([]) for _ in range(N + 1)] for _ in range(M): V1, V2 = map(int, input().sp.. 2020. 9. 9.