BFS 15

[백준][Python] 7562 나이트의 이동

♟️ https://www.acmicpc.net/problem/7562 7562번: 나이트의 이동 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 www.acmicpc.net 내 풀이 from collections import deque def bfs(x, y, ex, ey): q = deque() q.append((x, y)) while q: cx, cy = q.popleft() if cx == ex and cy == ey: return chess[cx][cy] for i in range(8): nx, ny = cx + dx[i], cy + dy[i] if 0

코딩테스트 2024.03.22

[백준][Python] 14502 연구소

🦠 https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 내 풀이 from itertools import combinations from collections import deque import copy def bfs(): cnt = 0 q = deque() for j in virus: q.append((j[0], j[1])) while q: cx, cy = q.popleft() for k in range(4): nx, ny = cx + dx[k], cy + d..

코딩테스트 2024.03.20

[백준][Python] 22352 항체 인식

💉 https://www.acmicpc.net/problem/22352 22352번: 항체 인식 첫 번째 줄에는 SP 촬영 결과의 크기를 의미하는 두 정수 $N$과 $M$이 주어진다. ($1 \le N, M \le 30$) 이는 촬영 결과가 세로로 $N$칸, 가로로 $M$칸 크기의 격자라는 것을 의미한다. 다음 $N$개의 줄에는 www.acmicpc.net 내 풀이 from collections import deque def bfs(x, y): global change q = deque() q.append((x,y)) visited[x][y] = True current = after[x][y] # 현재 영역의 값 if before[x][y] != current: # 백신을 놓기 전과 후의 결과가 다를 때..

코딩테스트 2024.03.18

[백준][Python] 13265 색칠하기

🖍️ https://www.acmicpc.net/problem/13265 13265번: 색칠하기 각 테스트 케이스에 대해서 possible 이나 impossible 을 출력한다. 2 가지 색상으로 색칠이 가능하면 possible. 불가능하면 impossible 이다. www.acmicpc.net 내 풀이 from collections import deque def bfs(c): q = deque() q.append(c) while q: current = q.popleft() if color[current] == '': # 현재 좌표의 색이 없다면, 연결된 동그라미들의 색을 확인한 후 결정해야 함 b_count = w_count = 0 for k in arr[current]: if color[k] == '..

코딩테스트 2024.03.17

[백준][Python] 1245 농장 관리

⛰️ https://www.acmicpc.net/problem/1245 1245번: 농장 관리 첫째 줄에 정수 N(1 < N ≤ 100), M(1 < M ≤ 70)이 주어진다. 둘째 줄부터 N+1번째 줄까지 각 줄마다 격자의 높이를 의미하는 M개의 정수가 입력된다. 격자의 높이는 500보다 작거나 같은 음이 아닌 정수 www.acmicpc.net 내 풀이 from collections import deque def bfs(x, y): peak = [] q = deque() q.append((x,y)) peak.append([x,y]) current = arr[x][y] # 현재 좌표의 높이 while q: cx, cy = q.popleft() for k in range(8): nx, ny = cx + d..

코딩테스트 2024.03.15

[백준][Python] 2660 회장뽑기

🤴🏻 https://www.acmicpc.net/problem/2660 2660번: 회장뽑기 입력의 첫째 줄에는 회원의 수가 있다. 단, 회원의 수는 50명을 넘지 않는다. 둘째 줄 이후로는 한 줄에 두 개의 회원번호가 있는데, 이것은 두 회원이 서로 친구임을 나타낸다. 회원번호는 1부터 www.acmicpc.net 내 풀이 from collections import deque def bfs(s): visited[s] = True q = deque() q.append(s) while q: c = q.popleft() for k in member[c]: if not visited[k]: visited[k] = True score[k] = score[c] + 1 q.append(k) final_score.a..

코딩테스트 2024.03.14

[백준][Python] 2589 보물섬

💎 https://www.acmicpc.net/problem/2589 2589번: 보물섬 보물섬 지도를 발견한 후크 선장은 보물을 찾아나섰다. 보물섬 지도는 아래 그림과 같이 직사각형 모양이며 여러 칸으로 나뉘어져 있다. 각 칸은 육지(L)나 바다(W)로 표시되어 있다. 이 지도에서 www.acmicpc.net 내 풀이 from collections import deque def bfs(x, y): q = deque() q.append((x, y)) distance = 0 temp = [[0] * M for _ in range(N)] visited = [[False] * M for _ in range(N)] visited[x][y] = True while q: cx, cy = q.popleft() for..

코딩테스트 2024.03.12

[백준][Python] 7576 토마토

🍅 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 내 풀이 from collections import deque def bfs(): q = deque() for i in range(len(tomato_index)): q.append((tomato_index[i][0], tomato_index[i][1])) while q: cx, cy = q.popleft() for k in range(4): nx, ny = cx + dx[k]..

코딩테스트 2024.03.09

[백준][Python] 10026 적록색약

❤️💚 https://www.acmicpc.net/problem/10026 10026번: 적록색약 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록) www.acmicpc.net 내 풀이 from collections import deque def bfs(x, y): global area q = deque() q.append((x,y)) visited[x][y] = True color = arr[x][y] # 현재 색 area += 1 while q: cx, cy = q.popleft() for k in range(4): nx, ny = cx + dx[k],..

코딩테스트 2024.03.08

[백준][Python] 2583 영역 구하기

◼️ https://www.acmicpc.net/problem/2583 2583번: 영역 구하기 첫째 줄에 M과 N, 그리고 K가 빈칸을 사이에 두고 차례로 주어진다. M, N, K는 모두 100 이하의 자연수이다. 둘째 줄부터 K개의 줄에는 한 줄에 하나씩 직사각형의 왼쪽 아래 꼭짓점의 x, y좌표값과 오 www.acmicpc.net 내 풀이 from collections import deque def bfs(x, y): visited[x][y] = True q = deque() size = 0 if arr[x][y] == 0: q.append((x,y)) size += 1 while q: cx, cy = q.popleft() for k in range(4): nx, ny = cx + dx[k], cy..

코딩테스트 2024.03.08