본문 바로가기

Algorithm19

섬나라 아일랜드(BFS) BFS(너비 우선 탐색)을 사용하여 섬의 개수를 구한다. 주어진 N*N 크기의 격자판에서 1은 섬, 0은 바다를 나타내며, 상하좌우 및 대각선으로 연결된 1들로 이루어진 영역을 하나의 섬으로 간주한다. 목표는 주어진 격자판에서 몇 개의 섬이 있는지 찾는 것이다.문제 설명격자판은 N*N 크기로 주어진다.1은 섬을 나타내고, 0은 바다를 나타낸다.상하좌우 및 대각선으로 연결된 1들은 하나의 섬으로 간주된다.BFS를 사용해 연결된 섬을 탐색하고, 총섬의 개수를 구한다.입력 예시71 1 0 0 0 1 00 1 1 0 1 1 00 1 0 0 0 0 00 0 0 1 0 1 11 1 0 1 1 0 01 0 0 0 1 0 01 0 1 0 1 0 0 출력 예시5 해결 과정1. 격자판 입력받기먼저 N을 입력받고, N*N .. 2024. 10. 19.
섬나라 아일랜드(DFS) N*N 크기의 격자판이 주어진다. 각 격자에는 섬(1) 또는 바다(0)가 표시되어 있다. 섬은 상하좌우 및 대각선으로 연결된 1들로 이루어져 있으며, 각각의 섬은 독립적인 하나의 연결 요소로 간주된다. 주어진 격자판에서 몇 개의 섬이 있는지 구하는 프로그램을 작성해야 한다.입력 설명첫 번째 줄에 자연수 N(3 두 번째 줄부터 N개의 줄에 걸쳐 N개의 숫자가 입력되며, 각 숫자는 0(바다) 또는 1(섬)을 의미한다.출력 설명섬의 개수를 출력한다.입력 예시71 1 0 0 0 1 00 1 1 0 1 1 00 1 0 0 0 0 00 0 0 1 0 1 11 1 0 1 1 0 01 0 0 0 1 0 01 0 1 0 1 0 0 출력 예시5 해결 과정격자판 입력받기먼저 N을 입력받고, N*N 크기의 격자판을 2차원 배.. 2024. 10. 19.
백준 7576번 - 토마토[BFS/Java] 문제 설명철수의 토마토 농장에는 여러 상자에 토마토가 보관되어 있다. 상자의 크기는 N×M 크기의 격자 형태로 구성되며, 각 칸에는 익은 토마토(1), 익지 않은 토마토(0), 또는 빈 칸(-1)이 존재할 수 있다. 하루가 지나면 익은 토마토는 인접한 네 방향(상, 하, 좌, 우)에 있는 익지 않은 토마토를 익게 만든다. 모든 토마토가 익는 데 걸리는 최소 일수를 계산해야 한다. 만약 익지 않은 토마토가 존재하나, 모두 익지 못하는 경우 -1을 출력하고, 처음부터 모든 토마토가 익어 있으면 0을 출력한다. 문제 접근이 문제는 최단 거리 탐색 문제로, 너비 우선 탐색(BFS, Breadth-First Search)를 통해 풀 수 있다. BFS는 시작점에서 가까운 노드부터 차례대로 탐색하는 방법으로, 인접한.. 2024. 10. 19.
미로의 최단거리 통로(BFS) 7x7 격자판 미로를 탈출하는 최단경로의 길이를 구하는 문제를 해결하기 위해 BFS(너비 우선 탐색) 알고리즘을 사용한다. BFS는 출발점에서 도착점까지 도달할 수 있는 모든 경로를 '너비'로 확장해 나가며 최단 경로를 구하는 알고리즘이다. 문제 설명격자판의 좌표 (1, 1)에서 출발하여 (7, 7)에 도착하는 최단 경로의 길이를 출력한다. 격자판의 각 칸은 벽(1) 또는 도로(0)로 이루어져 있으며, 이동할 수 있는 방향은 상, 하, 좌, 우로 한 칸씩 이동한다. 도착점에 도달할 수 없는 경우 -1을 출력한다.위 미로에서 최단 경로는 총 12칸을 이동한 것이다. 예시 입력0 0 0 0 0 0 00 1 1 1 1 1 00 0 0 1 0 0 01 1 0 1 0 1 11 1 0 1 0 0 01 0 0 0 1.. 2024. 10. 19.
미로탐색(DFS) 이 문제는 7x7 격자판에서 주어진 출발점에서 도착점까지 갈 수 있는 경로의 개수를 구하는 문제다. 격자판에서 1은 벽을 나타내고, 0은 통로를 나타낸다. 상하좌우로만 이동할 수 있으며, 중복되지 않는 경로를 찾아야 한다. 1. 문제 설명출발점: (1, 1) 좌표도착점: (7, 7) 좌표벽은 1로 표시되며, 통로는 0으로 표시됨상하좌우로만 이동 가능경로의 수를 구하는 문제2. 입력 및 출력입력: 7x7 격자판의 정보가 주어진다. 1은 벽, 0은 통로다.출력: 출발점에서 도착점까지 가능한 경로의 개수를 출력한다.3. 예제입력 예제:0 0 0 0 0 0 00 1 1 1 1 1 00 0 0 1 0 0 01 1 0 1 0 1 11 1 0 0 0 0 11 1 0 1 1 0 01 0 0 0 0 0 0 출력 예제:8.. 2024. 10. 19.
수열 추측하기(DFS) 이 문제는 파스칼의 삼각형과 조합을 이용하여, 주어진 N과 마지막 값 F를 기반으로 가장 윗줄에 들어갈 숫자들을 구하는 문제다. 입력으로 주어지는 N과 F는 각각 삼각형의 가장 윗줄에 위치한 숫자의 개수와 마지막 줄에 나오는 값이다. 1. 문제 설명주어진 N개의 숫자를 파스칼의 삼각형처럼 계산하여, 그 밑줄에 있는 숫자가 주어진 F가 되는 가장 윗줄의 숫자들을 구하는 것이 문제다. 만약 답이 여러 가지가 나올 경우, 사전순으로 가장 앞서는 경우를 출력해야 한다. 2. 파스칼의 삼각형과 가중치파스칼의 삼각형은 아래와 같이 계산되며, 각 숫자가 그 아래 숫자에 얼마나 기여하는지를 이항계수로 계산할 수 있다.예를 들어, n = 4, 그리고 주어진 윗줄이 3 1 2 4라면 다음과 같은 삼각형이 만들어진다.이 삼.. 2024. 10. 19.