자료구조(4)
-
[BOJ/백준] 10799번 쇠막대기 | 스택 | 파이썬
문제 풀이 import sys def cutIron(bar): stack = [] cnt = 0 for i in range(len(bar)): if bar[i] == '(': stack.append('(') elif bar[i] == ')': if bar[i-1] == '(': stack.pop() cnt += len(stack) else: stack.pop() cnt += 1 return cnt bar = list(sys.stdin.readline()) print(cutIron(bar)) 스택 자료구조를 사용한 문제. 입력으로 받은 문자열을 리스트 bar로 바꿔 쇠막대기 개수를 세는 함수 cutIron에 넣었다. bar의 길이만큼 반복문을 수행한다. 1) bar[i] 값이 '('이면 쇠막대기의 시작을 ..
2021.09.29 -
[BOJ/백준] 5430번 AC | 덱 | 파이썬
문제 풀이 import sys from collections import deque T = int(sys.stdin.readline()) for _ in range(T): func = list(sys.stdin.readline().rstrip()) n = int(sys.stdin.readline()) queue = deque(sys.stdin.readline().rstrip()[1:-1].split(",")) if n == 0: queue = deque() error = False cnt_R = 0 for i in range(len(func)): if func[i] == 'D': if queue: if cnt_R % 2 == 1: queue.pop() else: queue.popleft() else: e..
2021.09.01 -
[BOJ/백준] 7576번 토마토 | BFS | 파이썬
문제 풀이 from collections import deque def bfs(queue, box): global days dx, dy = [-1, 1, 0, 0], [0, 0, 1, -1] while queue: x, y = queue.popleft() for i in range(4): nx = x + dx[i] ny = y + dy[i] if 0
2021.08.09 -
깊이 우선 탐색(DFS)과 너비 우선 탐색(BFS) +백준 1260 문제풀이🙋♂️
DFS와 BFS는 대표적인 그래프 탐색 알고리즘이다. *그래프(graph): 노드(N, node)와 그 노드를 연결하는 간선(E, edge)을 하나로 모아놓은 자료구조 *탐색(search): 많은 양의 데이터 중 원하는 데이터를 찾는 과정 DFS (Depth-First Search, 깊이 우선 탐색) 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘 재귀 함수 또는 스택 자료구조를 사용하여 구현 동작 과정 1. 탐색 시작 노드를 *스택에 삽입하고 방문 처리 2. 스택의 최상단 노드에 방문하지 않은 인접 노드가 하나라도 있으면 그 노드를 스택에 넣고 방문처리 3. 방문하지 않은 인접 노드가 없으면 스택에처 최상단 노드 꺼내기 4. 더 이상 수행할 수 없을 때 까지 2와 3을 반복 *스택(stack): 값..
2021.08.05