Yeon DevLog

Algorithm 16

[백준/BOJ][JAVA] 1504 - 특정한 최단경로

[문제] 1504번: 특정한 최단 경로 첫째 줄에 정점의 개수 N과 간선의 개수 E가 주어진다. (2 ≤ N ≤ 800, 0 ≤ E ≤ 200,000) 둘째 줄부터 E개의 줄에 걸쳐서 세 개의 정수 a, b, c가 주어지는데, a번 정점에서 b번 정점까지 양방향 길이 존 www.acmicpc.net 📒 문제 방향성이 없는 그래프가 주어진다. 세준이는 1번 정점에서 N번 정점으로 최단 거리로 이동하려고 한다. 또한 세준이는 두 가지 조건을 만족하면서 이동하는 특정한 최단 경로를 구하고 싶은데, 그것은 바로 임의로 주어진 두 정점은 반드시 통과해야 한다는 것이다. 세준이는 한번 이동했던 정점은 물론, 한번 이동했던 간선도 다시 이동할 수 있다. 하지만 반드시 최단 경로로 이동해야 한다는 사실에 주의하라. 1..

Algorithm 2021.12.20

[백준/BOJ][JAVA] 1018 - 체스판 다시 칠하기

문제 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 📒 문제 지민이는 자신의 저택에서 MN개의 단위 정사각형으로 나누어져 있는 M×N 크기의 보드를 찾았다. 어떤 정사각형은 검은색으로 칠해져 있고, 나머지는 흰색으로 칠해져 있다. 지민이는 이 보드를 잘라서 8 × 8 크기의 체스판으로 만들려고 한다. 체스판은 검은색과 흰색이 번갈아서 칠해져 있어야 한다. 구체적으로, 각 칸이 검은색과 흰색 중 하나로 색칠되어 있고, 변을 공유하는 두 개의 사각형은 다른 색으로 칠해져 있어야 한다. 따라서 이 정의를 ..

Algorithm 2021.12.15

[ 백준/BOJ ][JAVA] 15651 - N과 M(3)

문제 15651번: N과 M (3) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 📒 문제 자연수 N과 M이 주어질 때, 1~N까지의 자연수 중 M개를 고른 수열을 구하라. 중복은 가능! 📒 풀이방식 백트래킹 기본문제 📒 소스코드 package BOJ.BackTracking; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStr..

Algorithm 2021.12.11

[백준/BOJ][JAVA] 18405 - 경쟁적 전염

문제 18405번: 경쟁적 전염 첫째 줄에 자연수 N, K가 공백을 기준으로 구분되어 주어진다. (1 ≤ N ≤ 200, 1 ≤ K ≤ 1,000) 둘째 줄부터 N개의 줄에 걸쳐서 시험관의 정보가 주어진다. 각 행은 N개의 원소로 구성되며, 해당 위치 www.acmicpc.net 📒 문제 N*N 크기의 시험관에 바이러스는 1~K까지의 종류가 들어있다. 이때, 모든 바이러스는 1초마다 상, 하, 좌, 우로 번호가 낮은 순서대로 증식한다. 단, 바이러스가 이미 존재하는 칸에는 증식할 수 없다. 📒 해결방법 우선적으로 input을 받을 때, 0이 아닌 수가 들어오면 PriorityQueue에 넣었다. 이런식으로 x좌표, y좌표, 그리고 해당 배열의 값을 넣어서 그 값으로 정렬해서 낮은 순으로 PriorityQ..

Algorithm 2021.12.09

[백준/BOJ][JAVA] 20055 - 컨테이너 벨트 위의 로봇

BOJ-20055 컨테이너 벨트 위의 로봇 문제 풀기 20055번: 컨베이어 벨트 위의 로봇 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부 www.acmicpc.net [문제] 일차원 배열을 2 * N + 1개를 받아 순환하며 단계별로 해결하는 문제였다. 어렵게 생각하지 않고, 이렇게 벨트가 한 칸 회전한다. 가장 먼저 벨트에 올라간 로봇부터, 벨트가 회전하는 방향으로 한 칸 이동할 수 있다면 이동한다. 만약 이동할 수 없다면 가만히 있는다. 로봇이 이동하기 위해서는 이동하려는 칸에 로봇이 없으며, 그 칸의 내구도가 1 이상 남아 있어야 한다. 올라가는 ..

Algorithm 2021.12.08