백준 토마토 [7576] 파이썬(Python) 코드 + 해설
문제 설명철수의 토마토 농장에서는 M x N 크기의 격자 모양 상자에 토마토를 보관한다. 토마토 중에는 익은 토마토(1)도 있고, 익지 않은 토마토(0)도 있으며, 토마토가 들어있지 않은 칸(-1)도 있다. 익은 토마토는 하루가 지나면 인접한 네 방향(상, 하, 좌, 우)에 있는 익지 않은 토마토를 익게 만든다. 이때, 상자에 있는 모든 토마토가 며칠이 지나면 다 익는지, 그 최소 일수를 구하는 프로그램을 작성한다. 단, 처음부터 모든 토마토가 익어있으면 0을 출력하고, 모두 익지 못하는 상황이면 -1을 출력해야 한다.문제 해결 방법이 문제는 BFS(너비 우선 탐색)를 이용해 해결할 수 있다. BFS는 그래프의 모든 인접 노드를 방문하며 탐색하는 방법으로, 여러 단계에 걸쳐 확산되는 문제를 해결하는 데 ..
2024. 11. 10.
백준 원판 돌리기 [17822] 파이썬(Python) 코드 + 해설
문제 설명반지름이 1부터 N까지인 원판들이 바닥에 놓여 있고, 각 원판에는 M개의 정수가 적혀 있다. 원판들은 중심을 공유하며, 각 원판의 번호는 작은 것부터 큰 것까지 1부터 N까지이다. 각 원판의 위치는 (i,j)로 표현되며, i는 원판의 번호, j는 원판 위의 숫자 위치이다. 원판들은 독립적으로 회전할 수 있으며, 회전은 시계 방향 또는 반시계 방향으로 이루어진다. 회전 후에는 다음과 같은 작업을 수행한다: 인접하면서 수가 같은 것들을 모두 찾는다. 인접한 위치는 다음과 같다: 같은 원판에서 양 옆에 있는 숫자들 같은 위치의 위아래 원판 숫자들 인접하면서 수가 같은 것이 있으면, 해당 수들을 지운다 (0으로 만든다). 없으면, 원판에 적힌 수들의 평균을 구하고, 평균보다 큰 수에서 1을 빼고, 작은..
2024. 11. 8.
백준 게리맨더링 2 [17779] 파이썬(Python) 코드 + 해설
문제 설명재현시는 𝑁 × 𝑁 크기의 격자로 표현되며, 각 격자는 구역을 의미합니다. 각 구역에는 인구수가 주어집니다. 시장은 공정한 선거구 획정을 위해 다음과 같은 규칙으로 다섯 개의 선거구로 나누려고 합니다.기준점 ( 𝑥,𝑦 )와 경계의 길이 𝑑1,𝑑2를 정합니다. (1≤𝑥경계선을 긋습니다:1번 경계선: (𝑥,𝑦)부터 (𝑥+𝑑1 , 𝑦−𝑑1) 까지 대각선2번 경계선: (𝑥,𝑦)부터 (𝑥+𝑑2, 𝑦+𝑑2) 까지 대각선3번 경계선: (𝑥+𝑑1,𝑦−𝑑1)부터 𝑥+𝑑1+𝑑2, 𝑦−𝑑1+𝑑2)까지 대각선4번 경계선: (𝑥+𝑑2,𝑦+𝑑2) 부터 ( 𝑥+𝑑2+𝑑1, 𝑦+𝑑2-𝑑1)까지 대각선경계선과 그 안에 포함된 구역은 5번 선거구로 설정..
2024. 11. 6.
백준 이차원 배열과 연산 [17140] 파이썬(Python) 코드 + 해설
문제 설명크기가 3×3인 배열 A가 있다. 배열의 인덱스는 1부터 시작한다. 매 초마다 배열에 연산이 적용된다.R 연산: 배열 A의 모든 행에 대해서 정렬을 수행한다. 행의 개수 ≥ 열의 개수인 경우에 적용된다.C 연산: 배열 A의 모든 열에 대해서 정렬을 수행한다. 행의 개수 각 행 또는 열에 있는 수를 정렬하려면, 각각의 수가 몇 번 나왔는지 알아야 한다. 그 다음, 수의 등장 횟수가 커지는 순으로, 그러한 것이 여러 개면 수가 커지는 순으로 정렬한다. 그 다음에는 배열 A에 정렬된 결과를 다시 넣어야 한다. 정렬된 결과를 배열에 넣을 때는, 수와 등장 횟수를 모두 넣으며, 순서는 수가 먼저이다.예를 들어, [3,1,1]에는 3이 1번, 1이 2번 등장한다. 따라서, 정렬된 결과는 [3,1,1,2]가..
2024. 11. 5.