반응형

개발/알고리즘 8

[bfs] 삼성이의 재난 예측

삼성재난센터에서는 장마철 재난에 대처하고자 어떤 지역의 높이 정보를 파악하여 그 지역에 많은 비가 내렸을 경우 물에 잠기지 않는 안전한 영역의 개수를 조사하려고 한다. 이 때, 문제를 간단하게 하기 위하여, 장마철에 내리는 비의 양에 따라 일정한 높이 이하의 모든 지점은 물에 잠긴다고 가정한다. 예) 5*5행렬인 지역의 높이 정보가 아래와 같을 때 결과 예시이다. 물에 잠긴영역을 표시하면 아래와 다음과 같이 변하게 된다. 위의 그림에서 안전한 영역은 물에 잠기지 않는 지점들이 위, 아래, 오른쪽 or 왼쪽으로 인접해 있으며 그 크기가 최대인 영역으로, 위의 높이 4이하가 잠기는 경우에서 물에 잠기지 않는 안전한 영역은 5개가 된다(꼭지점으로만 붙어 있는 두 지점은 인접하지 않는다고 취급!) 이와 같이 장..

개발/알고리즘 2015.02.12

[dfs] 단지 번호 붙이기 ->bfs로 풀기

프로그램 명: danji 제한시간: 1 초 아래와 같은 정사각형 모양의 지도가 있다. 1 은 집이 있는 곳을, 0 은 집이 없는 곳을 나타낸다. 0 1 1 0 1 0 0 0 1 1 0 1 0 1 1 1 1 0 1 0 1 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 1 1 1 1 1 0 0 1 1 1 0 0 0 그림 1 철수는 이 지도를 가지고 연결된 집들의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여기서 연결되었다는 것은 어떤 집이 좌우, 혹은 아래위로 다른 집이 있는 경우를 말한다. 대각선상에 집이 있는 경우는 연결된 것이 아니다. 그림 2 는 그림1 을 단지별로 번호를 붙인 것이다. 지도를 입력하여 단지수를 출력하고 , 각 단지에 속하는 집의 수를 오름차순으로 정렬하여 출력하는 ..

개발/알고리즘 2015.02.12

[greedy method] 스노보드/snowboard

프로그램 명: snowboard 제한시간: 1 초 마이클은 스노우보드를 매우 즐기는 녀석이다. 그런데 , 스노우 보드 탈 때 한가지 문제점은 내려갈때는 신나지만 올라갈때는 다시 걸어서 올라가거나 리프트를 타야하는 점이다. 마이클은 다시 올라가는 것을 되도록이면 피하고 싶어한다. 우리가 마이클을 도와주도록 하자. 다음은 입력의 한 예이다. 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 각각의 숫자는 산의 각 지점의 높이다. 스노우보드 움직일 때는 항상 높은 지점에서 낮은 지점으로만 움직여야 한다. 내려오는 코스는 산의 모든 지점을 포함하지 않을 수 있다. 위의 데이터에서 최적해는 25-24-..-2-1 이다. 입력 방법 첫째 줄에는 코..

개발/알고리즘 2015.02.12

[bfs] dam

프로그램 명: dam(open) 제한시간: 1 초 어느 마을 안에는 큰 호수가 있고, 그것을 막는 댐이 있었다. 그런데 어느날 그 댐이 무너져내려 호수에 있는 물이 마을을 모두 뒤덮으려한다. 호수에 있는 물은 다음 1시간에 한 블럭으로 이동하며, 물의 양은 무한하다 가정하자. 물은 상 하 좌 우로 퍼져나가며 마을을 뒤덮는다. 당신은 댐이 터진 순간 이 마을의 지도를 받았다. 당신이 도와줘야 할 일은 완공시간이 K시간인 댐들을 최대한 빨리 지어서 물이 더 이상 진행하지 못하도록 하는 것이다. 입력 첫 줄에는 배열의 크기인 T(1 ≤ T ≤100)가 주어지고 다음 줄부터 배열의 값이 주어진다. 0은 텅 빈 길, 1은 건물이다. (물은 건물을 뒤덮지 못한다고 가정한다.) 그리고 그 다음 줄에는 호수의 좌표 x..

개발/알고리즘 2015.02.06

[backtracking] eating_puzzle

프로그램 명: eating_puzzle 제한시간: 1 초 암소 베시는 다이어트를 하고 있다. 하루 칼로리양 C 를 정해 이를 초과해서 먹지 않을려고 한다. 그런데 , 농부 존은 맛있는 것이 가득 든 B 개의 바구니를 베시에게 주어 식욕을 자극하고 있다. 각 바구니에는 일정한 양의 칼로리를 가지고 있다. 당신의 일은 주어지는 C 를 초과하지 않는 상태에서 가장 이상적인 조합을 찾도록 베시를 도와 주는 것이다. 예를 들어, 한도가 40 칼로리이고 6 개의 바구니에 각각 7 , 13 , 17 , 19 ,29 , 31 의 칼로리를 가진 바구니가 주어진다면 7 + 31 = 38 , 7 + 13 + 19 = 39 , ... 이 중 39 가 먹을 수 있는 최대 칼로리 양이다. 입력 첫 번째 라인은 2 개의 정수 C ..

개발/알고리즘 2015.01.23

[재귀] upstair

프로그램 명: upstair제한시간: 1 초최대 2 칸 까지 오를 수 있을 때 오르는 방법의 가짓수를 출력 하는 문제이다.그림은 n 이 4 인 경우의 예 이다.1 - 2 - 3 - 41 - 2 - 41 - 3 - 42 - 3 - 42 - 4입력n 은 30 이하의 양의 정수이다.출력오를 수 있는 가짓 수를 출력한다.입출력 예입력 4 출력 5 123456789101112131415161718192021222324252627282930313233343536373839404142434445#include #define MAX 31 int Num;int stack[MAX];int Count; void input(){ scanf("%d", &Num);} void dfs(int depth, int value){ in..

개발/알고리즘 2015.01.23

[dfs] maze (최단 거리 찾기)

프로그램 명: maze제한시간: 1 초도적들로부터 값진 보물을 훔쳐 달아나던 알리바바는 한 도시에 이르렀다. 그 도시는 전체가 마치 미로처럼 되어 있는 도시였는데 그 도시 한 쪽 끝에는 미리 준비해 놓은 배가 있어,도시 끝까지만 다다르면 도적들을 따돌릴 수 있다. 그런데 도적들은 이 도시에 대하여 잘아고 있기 때문에 도적들보다 먼저 출구에 다다르기 위해서는반드시 최단거리를 갖는 길로 가야만 한다.도시의 지도가 주어질 때 최단 거리의 길을 찾는 프로그램을 작성하시오. 예를들어 도시의모양이 위와 같을 경우 입구에서 오른쪽으로 갈 경우 총 9 개의 블록(하얀 블록의 개수)를 지나 출구에 다다를 수 있다.입력 형식첫째 줄에 미로의 세로의 크기와 가로의 크기를 나타내는 자연수 N 과 M 이 이 주어지고 다음 N ..

개발/알고리즘 2015.01.23

[dfs] orders (알파벳 사전식 정렬)

프로그램 명: orders제한시간: 1 초[문제 요약] 알파벳 소문자가 입력으로 주어진다. 이를 사전순으로 정렬하여 출력하는 프로그램. 단 , 같은 것을 포함하는 문자열이고 , 문자수는 200 자를 넘지 않고 출력시 중복을 허락하지 않는다.출력의 크기는 최대 2 메가바이트를 넘지 않는다.입력Input contains a single line with all labels of the requested goods (in random order). Each kind of goods is represented by the starting letter of its label. Only small letters of the English alphabet are used. The number of orders doe..

개발/알고리즘 2015.01.23
반응형