본문 바로가기

전체 글51

[백준] 7576 토마토 (파이썬/python) 🎈문제 https://www.acmicpc.net/problem/7576 🎁어떤 알고리즘? 1. 인접한 칸을 익게 만든다고 했으므로 당연히 bfs를 사용한다. (bfs란?) 2. 이 문제와 같이 시작점이 여러개인 문제는 큐에 시작점을 모두 넣고 나서 bfs를 돌리는 것이 핵심이다. 💻코드 from collections import deque def bfs(): # 상하좌우 좌표 설정 dx = [0,0,-1,1] dy = [1,-1,0,0] while deq: x,y = deq.popleft() # 큐에서 익은 토마토 좌표 꺼내기 for i in range(4): # 상하좌우 탐색 시작 nx = x + dx[i] ny = y + dy[i] # graph 벗어난 좌표는 무시 if nx .. 2023. 6. 19.
[백준] 2178 미로 (파이썬/python) 🎈문제 https://www.acmicpc.net/problem/2178 🎁어떤 알고리즘? 1. 지나야하는 최소 칸수를 출력해야 하므로 bfs로 결정. ( bfs 란? ) 2. 최적의 루트를 찾을 때는 맵에 이동 횟수를 저장해나가는 것이 좋다.(자주 쓰이므로 꼭 기억) 💻코드 from collections import deque def bfs(x,y): deq = deque() deq.append([x,y]) # 상하좌우 이동을 위한 좌표 설정 dx = [0,0,-1,1] dy = [1,-1,0,0] while deq: x,y = deq.popleft() for i in range(4): nx = x + dx[i] ny = y + dy[i] if nx (n-1) or ny < 0 o.. 2023. 6. 19.
[백준] 1926 그림 (파이썬/python) 🎈문제 https://www.acmicpc.net/problem/1926 🎁어떤 알고리즘? 1. 그래프 탐색 속도 자체는 bfs가 빠르다. 2. 그래프가 크거나 경로의 특징을 저장해야 할 경우는 dfs가 유리하다. 3. 그래프가 크지 않고 최단 거리를 구해야 하는 경우는 bfs가 유리하다. 4. 이 문제의 경우 그래프가 크지 않으므로 bfs를 사용하기로 결정. 💻코드 from collections import deque # 그림 넓이를 반환하는 bfs함수 def bfs(x,y): deq = deque() # 큐 설정 deq.append([x,y]) # 현재 좌표 큐에 삽입 count_area = 1 # 현재 좌표 방문 후 큐에 삽입했으므로 1부터 graph[x][y] = 0 # 현재 좌표 방문 처리 # .. 2023. 6. 17.