본문 바로가기

PS28

[백준] 10026번: 적록색맹 파이썬 https://www.acmicpc.net/problem/10026쉽다.그냥 bfs를 두번 쓰면된다. 근데 적록색맹인 경우를 처리하는 방법이 여러가지일거같은데그냥 배열에서 R을 G로 바꿔버린 후 bfs를 하는 방법도있고.... 나는 그냥 bfs에 조건 추가해서 구현했다. import sysfrom collections import dequedx = [1, -1, 0, 0]dy = [0, 0, 1, -1]def bfs(a, b, check): q = deque() q.append((a, b)) dis[a][b] = 1 while q: x, y = q.popleft() for i in range(4): nx = x + dx[i] ny = y + dy[i] if 0.. 2024. 6. 25.
[백준]4179번: 불! 파이썬 https://www.acmicpc.net/problem/4179 문제 설명미로 속에서 지훈이가 화재로부터 도망쳐야 한다. 미로의 크기와 구성은 주어지며, 지훈이는 미로의 가장자리로 탈출해야 한다. 불(F)은 매 초마다 확산되며, 지훈이는 불보다 먼저 가장자리에 도착해야 탈출할 수 있다.  풀이import sysfrom collections import dequedx = [1, 0, -1, 0]dy = [0, 1, 0, -1]def bfs(check): while q: x, y = q.popleft() for i in range(4): nx = x + dx[i] ny = y + dy[i] if 0  이 문제에서 유의할 점은 지훈이와 불이 동시에 움직인다는 것이다.그.. 2024. 6. 25.
[백준] 2667번: 단지번호붙이기 파이썬 https://www.acmicpc.net/problem/2667bfs로 탐색할때마다 갯수 세고, 집 수 세면 끝.import sysfrom collections import dequedef bfs(x,y): q = deque([(x,y)]) arr[x][y] = -1 house_count = 1 while q: x,y = q.popleft() for i in range(4): nx = x + dx[i] ny = y + dy[i] if 0  bfs문제는 많이 나오니까 관련 문제를 익숙해질때까지 많이 풀어야겠다. 2024. 6. 25.
[백준] 7569번: 토마토(3차원) 파이썬 https://www.acmicpc.net/problem/7569 유명한 토마토 문제근데 3차원인. 첫째 줄에 상자의 크기를 나타내는 M, N, H가 주어지고 각 줄마다 상자에 들어있는 토마토 상태가 주어짐:1: 익은 토마토0: 익지 않은 토마토-1: 토마토가 들어있지 않은 칸우리가 해야 할 일은 모든 토마토가 다 익을 때까지 며칠이 걸리는지 구하는 거임. 만약 처음부터 모든 토마토가 다 익어있으면 0을 출력하고, 토마토가 다 익지 못하면 -1을 출력하면 됨.   풀이 import sysfrom collections import deque# 방향 벡터 (상, 하, 좌, 우, 위, 아래)dx = [1, 0, -1, 0, 0, 0]dy =[0, 1, 0, -1, 0, 0]dz = [0, 0, 0, 0, 1,.. 2024. 6. 24.