본문 바로가기

알고리즘 문제풀이 입문: 코딩테스트 대비/섹션 8. DFS, BFS 활용14

피자 배달 거리(삼성 SW역량평가 기출문제 : DFS활용) 설명N×N 크기의 도시지도가 있습니다. 도시지도는 1×1크기의 격자칸으로 이루어져 있습니다.각 격자칸에는 0은 빈칸, 1은 집, 2는 피자집으로 표현됩니다. 각 격자칸은 좌표(행번호, 열 번호)로 표현됩니다.행번호는 1번부터 N번까지이고, 열 번호도 1부터 N까지입니다.도시에는 각 집마다 “피자배달거리”가 있는데 각 집의 피자배달거리는 해당 집과 도시의 존재하는피자집들과의 거리 중 최소값을 해당 집의 “피자배달거리”라고 한다.집과 피자집의 피자배달거리는 |x1-x2|+|y1-y2| 이다.예를 들어, 도시의 지도가 아래와 같다면(1, 2)에 있는 집과 (2, 3)에 있는 피자집과의 피자 배달 거리는 |1-2| + |2-3| = 2가 된다.최근 도시가 불경기에 접어들어 우후죽순 생겼던 피자집들이 파산하고 있.. 2024. 5. 20.
섬나라 아일랜드 (DFS, BFS) 설명N*N의 섬나라 아일랜드의 지도가 격자판의 정보로 주어집니다.각 섬은 1로 표시되어 상하좌우와 대각선으로 연결되어 있으며, 0은 바다입니다.섬나라 아일랜드에 몇 개의 섬이 있는지 구하는 프로그램을 작성하세요.만약 위와 같다면 섬의 개수는 5개입니다. 입력첫 번째 줄에 자연수 N(3두 번째 줄부터 격자판 정보가 주어진다. 출력첫 번째 줄에 섬의 개수를 출력한다.예시 입력 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 예시 출력 15 문제 해결 2차원 격자판에서 서로 연결된 섬들을 찾아 개수를 세는 문제이다.같은 문제에 대해 DFS와 BFS 두 방식으로 문제를 풀어보았다. stati.. 2024. 5. 18.
토마토(BFS 활용) 설명현수의 토마토 농장에서는 토마토를 보관하는 큰 창고를 가지고 있다.토마토는 아래의 그림과 같이 격자 모양 상자의 칸에 하나씩 넣어서 창고에 보관한다.창고에 보관되는 토마토들 중에는 잘 익은 것도 있지만, 아직 익지 않은 토마토들도 있을 수 있다. 보관 후 하루가 지나면,익은 토마토들의 인접한 곳에 있는 익지 않은 토마토들은 익은 토마토의 영향을 받아 익게 된다.하나의 토마토의 인접한 곳은 왼쪽, 오른쪽, 앞, 뒤 네 방향에 있는 토마토를 의미한다. 대각선 방향에 있는 토마토들에게는 영향을 주지 못하며, 토마토가 혼자 저절로 익는 경우는 없다고 가정한다. 현수는 창고에 보관된 토마토들이 며칠이 지나면 다 익게 되는지, 그 최소 일수를 알고 싶어 한다.토마토를 창고에 보관하는 격자모양의 상자들의 크기와 .. 2024. 5. 18.
미로의 최단거리 통로(BFS) 설명7*7 격자판 미로를 탈출하는 최단경로의 길이를 출력하는 프로그램을 작성하세요.경로의 길이는 출발점에서 도착점까지 가는데 이동한 횟수를 의미한다.출발점은 격자의 (1, 1) 좌표이고, 탈출 도착점은 (7, 7)좌표이다. 격자판의 1은 벽이고, 0은 도로이다.격자판의 움직임은 상하좌우로만 움직인다. 미로가 다음과 같다면위와 같은 경로가 최단 경로의 길이는 12이다. 입력첫 번째 줄부터 7*7 격자의 정보가 주어집니다. 출력첫 번째 줄에 최단으로 움직인 칸의 수를 출력한다. 도착할 수 없으면 -1를 출력한다. 예시 입력 1 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 0 01 0 1 0 0 0 0 예시 출력 112 .. 2024. 5. 18.
미로 탐색 (DFS) 설명7*7 격자판 미로를 탈출하는 경로의 가지수를 출력하는 프로그램을 작성하세요.출발점은 격자의 (1, 1) 좌표이고, 탈출 도착점은 (7, 7)좌표이다. 격자판의 1은 벽이고, 0은 통로이다.격자판의 움직임은 상하좌우로만 움직인다. 미로가 다음과 같다면 위의 지도에서 출발점에서 도착점까지 갈 수 있는 방법의 수는 8가지이다. 입력7*7 격자판의 정보가 주어집니다. 출력첫 번째 줄에 경로의 가지수를 출력한다. 예시 입력 1 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 예시 출력 18  문제 해결 7 x 7로 정해진 미로를 탈출하는 경로의 가지수를 구해 출력하는 문제이다.static in.. 2024. 5. 15.
조합 구하기 설명1부터 N까지 번호가 적힌 구슬이 있습니다. 이 중 M개를 뽑는 방법의 수를 출력하는 프로그램을 작성하세요. 입력첫 번째 줄에 자연수 N(3 출력첫째 줄에 결과를 출력합니다.출력순서는 사전순으로 오름차순으로 출력합니다. 예시 입력 1 4 2 예시 출력 11 2 1 3 1 4 2 3 2 4 3 4  문제 해결  1부터 N까지 번호가 적힌 구슬 중에서 M개를 뽑는 모든 조합을 출력하는 문제이다.모든 조합을 출력해야하므로 DFS 를 이용해보자. static int N, M;static int[] bead, selected;public static void main(String[] args) { Scanner in = new Scanner(System.in); N = in.nextInt(); .. 2024. 5. 15.
반응형