2019.03.03) 백준 완전탐색 특집 1편 - 1260 (PyPy3)
2019. 3. 3. 16:31ㆍ프로그래밍(주력)/백준 문제풀이
dfs는 스택, bfs는 큐를 활용한다는걸 스택이랑 큐를 배우고 나서 알았다.
재귀로 구현할땐 아니긴 하지만 for문으로 최적화할땐 꼭 필요해보인다.
1260번
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | d, c, r = map(int, input().split(' ')) # 그래프 만들기 graph = dict() for i in range(1, d+1): graph[i] = list() for i in range(c): a, b = map(int, input().split(' ')) graph[a].append(b) graph[b].append(a) for i in range(d): graph[i+1].sort() # dfs # 스택을 활용함 stack = [r] visited = [False for i in range(d + 1)] while stack: # 맨 뒷값만 사용 now = stack.pop() if not visited[now]: visited[now] = True print(now, end=' ') # 거꾸로 정렬해서 넣어야함 tmp = graph[now][:] tmp.sort(reverse=True) for i in tmp: if not visited[i]: stack.append(i) print() # bfs # 큐를 활용함 q = [r] visited = [False for i in range(d + 1)] while q: # 맨 앞값만 사용 now = q.pop(0) if not visited[now]: visited[now] = True print(now, end=' ') # 정렬햇 넣어야함 tmp = graph[now][:] tmp.sort() for i in tmp: if not visited[i]: q.append(i) | cs |
'프로그래밍(주력) > 백준 문제풀이' 카테고리의 다른 글
2019.03.05) 백준 스택 심화 1편 - 6549 (PyPy3) (0) | 2019.03.05 |
---|---|
2019.03.04) 백준 완전탐색 특집 2편 - 1697 (PyPy3) (0) | 2019.03.04 |
2019.03.02) 백준 dfs 특집 2편 - 14888, 2800(PyPy3) (0) | 2019.03.02 |
2019.03.01) 백준 dfs 특집 1편 - 1182, 6603(PyPy3) (0) | 2019.03.01 |
2019.02.28) 백준 큐 특집 - 2161, 1966, 2164(시간초과?) (PyPy3) (0) | 2019.02.28 |