728x90

Algorithm (Python, Java, SQL) 235

[Python Algorithm] 깊이/넓이 우선탐색(DFS, BFS) - 피자 배달 거리(DFS)

> 깊이/넓이 우선탐색(DFS, BFS) 활용 (DFS 편) 📖 문제 : 피자 배달 거리 N×N 크기의 도시지도가 있습니다. 도시지도는 1×1크기의 격자칸으로 이루어져 있습니다. 각 격자칸에는 0은 빈칸, 1은 집, 2는 피자집으로 표현됩니다. 각 격자칸은 좌표(행번호, 열 번호) 로 표현됩니다. 행번호는 1번부터 N번까지이고, 열 번호도 1부터 N까지입니다. 도시에는 각 집마다 “피자배달거리”가 았는데 각 집의 피자배달거리는 해당 집과 도시의 존재 하는 피자집들과의 거리 중 최소값을 해당 집의 “피자배달거리”라고 한다. 집과 피자집의 피자배달거리는 |x1-x2|+|y1-y2| 이다. 예를 들어, 도시의 지도가 아래와 같다면 (1, 2)에 있는 집과 (2, 3)에 있는 피자집과의 피자 배달 거리는 |1-..

[Python Algorithm] 깊이/넓이 우선탐색(DFS, BFS) - 사다리 타기(DFS)

> 깊이/넓이 우선탐색(DFS, BFS) 활용 (DFS 편) 📖 문제 : 사다리 타기 현수와 친구들은 과자를 사먹기 위해 사다리 타기를 합니다. 사다리 표현은 2차원 평면은 0으 로 채워지고, 사다리는 1로 표현합니다. 현수는 특정도착지점으로 도착하기 위해서는 몇 번째 열에서 출발해야 하는지 알고싶습니다. 특정 도착지점은 2로 표기됩니다. 여러분이 도와주세 요. 사다리의 지도가 10*10이면 특정 목적지인 2에 도착하려면 7번 열 출발지에서 출발하면 됩니다. 입력설명 10*10의 사다리 지도가 주어집니다. 출력설명 출발지 열 번호를 출력하세요. 입력예제 1 1 0 1 0 0 1 0 1 0 1 1 0 1 1 1 1 0 1 0 1 1 0 1 0 0 1 0 1 0 1 1 0 1 0 0 1 0 1 1 1 1 0..

[Python Algorithm] 깊이/넓이 우선탐색(DFS, BFS) - 토마토(BFS 활용)

> 깊이/넓이 우선탐색(DFS, BFS) 활용 (BFS 편) 📖 문제 : 토마토 현수의 토마토 농장에서는 토마토를 보관하는 큰 창고를 가지고 있다. 토마토는 아래의 그림과 같이 격자 모양 상자의 칸에 하나씩 넣어서 창고에 보관한다. 창고에 보관되는 토마토들 중에는 잘 익은 것도 있지만, 아직 익지 않은 토마토들도 있을 수 있다. 보관 후 하루가 지나면, 익은 토마토들의 인접한 곳에 있는 익지 않은 토마토들은 익은 토마토의 영향을 받아 익게 된다. 하나의 토마토의 인접한 곳은 왼쪽, 오른쪽, 앞, 뒤 네 방향 에 있는 토마토를 의미한다. 대각선 방향에 있는 토마토들에게는 영향을 주지 못하며, 토마토가 혼자 저절로 익는 경우는 없다고 가정한다. 현수는 창고에 보관된 토마토들이 며칠이 지나면 다 익게 되는지,..

[Python Algorithm] 깊이/넓이 우선탐색(DFS, BFS) - 안전 영역(DFS)

> 깊이/넓이 우선탐색(DFS, BFS) 활용 (DFS 편) 📖 문제 : 안전영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 안전한 영역이 최대로 몇 개가 만들어 지는 지를 조사하려고 한다. 이때, 문제를 간단하게 하기 위하여, 장마철에 내리는 비의 양에 따라 일정한 높이 이하의 모든 지점은 물에 잠긴다고 가정한다. 어떤 지역의 높이 정보는 행과 열의 크기가 각각 N인 2차원 배열 형태로 주어지며 배열의 각 원소는 해당 지점의 높이를 표시하는 자연수이다. 예를 들어, 다음은 N=5인 지역의 높이 정보이다. 이제 위와 같은 지역에 많은 비가 내려서 높이가 4 이하..

[Python Algorithm] 깊이/넓이 우선탐색(DFS, BFS) - 단지 번호 붙이기(DFS)

> 깊이/넓이 우선탐색(DFS, BFS) 활용 (DFS 편) 📖 문제 : 단지 번호 붙이기 그림 1 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집들의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한 다. 여기서 연결 되었다는 것은 어떤 집이 좌우, 혹은 아래 위로 다른 집이 있는 경우를 말한다. 대각선상에 집이 있는 경우는 연결된 것이 아니다. 그림2는 그림1을 단지 별로 번호를 붙인 것이다. 지도를 입력하여 단지수를 출력하고, 각 단지에 속하는 집의 수를 오름차 순으로 정렬하여 출력하는 프로그램을 작성하시오. 입력설명 첫 번째줄에는 지도의 크기 N(정사각형이므로 가로와 세로의 크기는 같으며 5≤N≤25)이 입력 되고 ..

[Python Algorithm] 깊이/넓이 우선탐색(DFS, BFS) - 등산 경로(DFS)

> 깊이/넓이 우선탐색(DFS, BFS) 활용 (DFS 편) 📖 문제 : 등산 경로 등산을 매우 좋아하는 철수는 마을에 있는 뒷산에 등산경로를 만들 계획을 세우고 있습니다. 마을 뒷산의 형태를 나타낸 지도는 N*N 구역으로 나뉘어져 있으며, 각 구역에는 높이가 함께 나타나 있습니다. N=5이면 아래와 같이 표현됩니다. 어떤 구역에서 다른 구역으로 등산을 할 때는 그 구역의 위, 아래, 왼쪽, 오른쪽 중 더 높은 구역으로만 이동할 수 있도록 등산로를 설계하려고 합니다. 등산로의 출발지는 전체 영역에서 가장 낮은 곳이고, 목적지는 가장 높은 곳입니다. 출발지와 목적지는 유일합니다. 지도가 주어지면 출발지에서 도착지로 갈 수 있는 등산 경로가 몇가지 인지 구하는 프로그램을 작성하세요. 입력설명 첫 번째 줄에 ..

[Python Algorithm] 깊이/넓이 우선탐색(DFS, BFS) - 미로 탐색(DFS)

> 깊이/넓이 우선탐색(DFS, BFS) 활용 (DFS 편) 📖 문제 : 미로 탐색 7*7 격자판 미로를 탈출하는 경로의 가지수를 출력하는 프로그램을 작성하세요. 출발점은 격 자의 (1, 1) 좌표이고, 탈출 도착점은 (7, 7)좌표이다. 격자판의 1은 벽이고, 0은 통로이다. 격 자판의 움직임은 상하좌우로만 움직인다. 미로가 다음과 같다면 위의 지도에서 출발점에서 도착점까지 갈 수 있는 방법의 수는 8가지이다. 입력설명 7*7 격자판의 정보가 주어집니다. 출력설명 첫 번째 줄에 경로의 가지수를 출력한다. 입력예제 1 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 1 0 0 0 1 1 0 1 0 1 1 1 1 0 0 0 0 1 1 1 0 1 1 0 0 1 0 0 0 0 0 0 출력예제 1 ..

[Python Algorithm] 깊이/넓이 우선탐색(DFS, BFS) - 알파코드(DFS)

> 깊이/넓이 우선탐색(DFS, BFS) 활용 (DFS 편) 📖 문제 : 알파코드 철수와 영희는 서로의 비밀편지를 암호화해서 서로 주고받기로 했다. 그래서 서로 어떻게 암호화를 할 것인지 의논을 하고 있다. 영희 : 우리 알파벳 A에는 1로, B에는 2로 이렇게 해서 Z에는 26을 할당하여 번호로 보내기로 하자. 철수 : 정말 바보같은 생각이군!! 생각해 봐!! 만약 내가 “BEAN"을 너에게 보낸다면 그것을 암 호화하면 25114이잖아!! 그러면 이것을 다시 알파벳으로 복원할 때는 많은 방법이 존재하는 데 어떻게 할건데... 이것을 알파벳으로 바꾸면 BEAAD, YAAD, YAN, YKD 그리고 BEKD로 BEAN말고도 5가지나 더 있군. 당신은 위와 같은 영희의 방법으로 암호화된 코드가 주어지면 그것..

[Python Algorithm] 깊이/넓이 우선탐색(DFS, BFS) - 동전 분배하기(DFS)

> 깊이/넓이 우선탐색(DFS, BFS) 활용 (DFS 편) 📖 문제 : 동전 분배하기 N개의 동전을 A, B, C 세명에게 나누어 주려고 합니다. 세 명에게 동전을 적절히 나누어 주어, 세 명이 받은 각각의 총액을 계산해, 총액이 가장 큰 사람과 가장 작은 사람의 차가 최소가 되도록 해보세요. 단 세 사람의 총액은 서로 달라야 합니다. 입력설명 첫째 줄에는 동전의 개수 N(3

[Python Algorithm] 깊이/넓이 우선탐색(DFS, BFS) - 섬나라 아일랜드(BFS)

> 깊이/넓이 우선탐색(DFS, BFS) 활용 (BFS 편) 📖 문제 : 섬나라 아일랜드 섬나라 아일랜드의 지도가 격자판의 정보로 주어집니다. 각 섬은 1로 표시되어 상하좌우와 대 각선으로 연결되어 있으며, 0은 바다입니다. 섬나라 아일랜드에 몇 개의 섬이 있는지 구하는 프로그램을 작성하세요. 만약 위와 같다면 입력설명 첫 번째 줄에 자연수 N(3

728x90