알고리즘
-
백준_2163 초콜릿 자르기알고리즘/Dynamic Programming 2020. 1. 29. 09:46
링크 https://www.acmicpc.net/problem/2163 2163번: 초콜릿 자르기 정화는 N×M 크기의 초콜릿을 하나 가지고 있다. 초콜릿은 금이 가 있는 모양을 하고 있으며, 그 금에 의해 N×M개의 조각으로 나눠질 수 있다. 초콜릿의 크기가 너무 크다고 생각한 그녀는 초콜릿을 친구들과 나눠 먹기로 했다. 이를 위해서 정화는 초콜릿을 계속 쪼개서 총 N×M개의 조각으로 쪼개려고 한다. 초콜릿을 쪼갤 때에는 초콜릿 조각을 하나 들고, 적당한 위치에서 초콜릿을 쪼갠다. 초콜릿을 쪼갤 때에는 금이 가 있는 위치에서만 쪼갤 수 있다. 이와 www.acmicpc.net 접근 재귀적으로 초콜릿을 절반으로 잘라 나간다 절반으로 자르고 나면 2개의 영역이 생긴다 A : 절반으로 잘린 크기 B : 전체..
-
3055_탈출알고리즘/BFS 2020. 1. 29. 09:35
링크 https://www.acmicpc.net/problem/3055 3055번: 탈출 문제 사악한 암흑의 군주 이민혁은 드디어 마법 구슬을 손에 넣었고, 그 능력을 실험해보기 위해 근처의 티떱숲에 홍수를 일으키려고 한다. 이 숲에는 고슴도치가 한 마리 살고 있다. 고슴도치는 제일 친한 친구인 비버의 굴로 가능한 빨리 도망가 홍수를 피하려고 한다. 티떱숲의 지도는 R행 C열로 이루어져 있다. 비어있는 곳은 '.'로 표시되어 있고, 물이 차있는 지역은 '*', 돌은 'X'로 표시되어 있다. 비버의 굴은 'D'로, 고슴도치의 위치는 'S'로 나 www.acmicpc.net 접근 물과의 상호작용을 확인 하면서 비버굴로 들어가기 위한 최소 거리 도출 이동조건 고슴도치 영역이내 돌이 아님 물이 차오르지 않을 예..
-
15685_드래곤커브알고리즘/simulation 2020. 1. 29. 09:29
링크 https://www.acmicpc.net/problem/15685 15685번: 드래곤 커브 첫째 줄에 드래곤 커브의 개수 N(1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 드래곤 커브의 정보가 주어진다. 드래곤 커브의 정보는 네 정수 x, y, d, g로 이루어져 있다. x와 y는 드래곤 커브의 시작 점, d는 시작 방향, g는 세대이다. (0 ≤ x, y ≤ 100, 0 ≤ d ≤ 3, 0 ≤ g ≤ 10) 입력으로 주어지는 드래곤 커브는 격자 밖으로 벗어나지 않는다. 드래곤 커브는 서로 겹칠 수 있다. 방향은 0, 1, 2, www.acmicpc.net 접근 map에 드래곤 커브를 그려나간다 대칭인 커브를 만들기 위해 기존에 생성된 방향의 역순대로 커브를 추가해나간다 방향 0 ..
-
백준 2583_영역 구하기알고리즘/BFS 2020. 1. 29. 09:27
링크 https://www.acmicpc.net/problem/2583 2583번: 영역 구하기 첫째 줄에 M과 N, 그리고 K가 빈칸을 사이에 두고 차례로 주어진다. M, N, K는 모두 100 이하의 자연수이다. 둘째 줄부터 K개의 줄에는 한 줄에 하나씩 직사각형의 왼쪽 아래 꼭짓점의 x, y좌표값과 오른쪽 위 꼭짓점의 x, y좌표값이 빈칸을 사이에 두고 차례로 주어진다. 모눈종이의 왼쪽 아래 꼭짓점의 좌표는 (0,0)이고, 오른쪽 위 꼭짓점의 좌표는(N,M)이다. 입력되는 K개의 직사각형들이 모눈종이 전체를 채우는 경우는 없다. www.acmicpc.net 접근 입력과 함계 영역을 색칠한다 for y =m) continue; if(visited[ny][nx] || map[ny][nx] == 1) c..
-
백준_1057 토너먼트알고리즘/simulation 2020. 1. 29. 09:25
링크 https://www.acmicpc.net/problem/1057 1057번: 토너먼트 김지민은 N명이 참가하는 스타 토너먼트에 진출했다. 토너먼트는 다음과 같이 진행된다. 일단 N명의 참가자는 번호가 1번부터 N번까지 배정받는다. 그러고 난 후에 서로 인접한 번호끼리 스타를 한다. 이긴 사람은 다음 라운드에 진출하고, 진 사람은 그 라운드에서 떨어진다. 만약 그 라운드의 참가자가 홀수명이라면, 마지막 번호를 가진 참가자는 다음 라운드로 자동 진출한다. 다음 라운드에선 다시 참가자의 번호를 1번부터 매긴다. 이때, 번호를 매기는 순서는 처음 www.acmicpc.net 접근 경기 대진표를 그려본다 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 3 5 8 9 11 13 15..
-
12869_뮤탈리스크알고리즘/BFS 2020. 1. 28. 09:18
링크 https://www.acmicpc.net/problem/12869 12869번: 뮤탈리스크 1, 3, 2 순서대로 공격을 하면, 남은 체력은 (12-9, 10-1, 4-3) = (3, 9, 1)이다. 2, 1, 3 순서대로 공격을 하면, 남은 체력은 (0, 0, 0)이다. www.acmicpc.net 접근 - 순열 생성을 통해 SCV의 공격 순서를 정한다 - n이 3가지 제한되어 있으므로 3! = 6 이다 - typedef vector scv 로 scv의 상태를 정한다 - 공격횟수를 저장하기 위헤 map 를 사용한다 - 만약 hp가 0이상인 scv가 하나도 없다면 탐색을 멈추고 도달 하기 까지의 거리를 반환한다 #include #include #include #include #include usi..
-
9205_맥주마시면서 걸어가기알고리즘/DFS 2020. 1. 28. 09:15
링크 : https://www.acmicpc.net/problem/9205 9205번: 맥주 마시면서 걸어가기 문제 송도에 사는 상근이와 친구들은 송도에서 열리는 펜타포트 락 페스티벌에 가려고 한다. 올해는 맥주를 마시면서 걸어가기로 했다. 출발은 상근이네 집에서 하고, 맥주 한 박스를 들고 출발한다. 맥주 한 박스에는 맥주가 20개 들어있다. 목이 마르면 안되기 때문에 50미터에 한 병씩 마시려고 한다. 상근이의 집에서 페스티벌이 열리는 곳은 매우 먼 거리이다. 따라서, 맥주를 더 구매해야 할 수도 있다. 미리 인터넷으로 조사를 해보니 다행히도 맥주를 파는 편의 www.acmicpc.net 접근 - 10000(50*20) 미터 이내에 있는 거리는 도달 할 수 있다 - 출발점으로 부터 각각의 좌표 정보를..
-
11559_puyopuyo알고리즘/DFS 2020. 1. 28. 09:11
링크 : https://www.acmicpc.net/problem/11559 11559번: Puyo Puyo 현재 주어진 상황에서 몇연쇄가 되는지 출력하라. (하나도 터지지 않는다면 0을 출력하면 된다.) www.acmicpc.net 접근 - dfs를 통해 인접한 같은 컬러의 뿌요를 탐색해 나간다 - 탐색으로 인해 추가된 뿌요의 갯수가 4개 이상이라면 터뜨린다 - 터뜨린 빈 공간에 나머지 뿌요를 하단으로 밀착시킨다 - 시뮬레이션 + dfs 문제 *주의 - 연쇄의 수를 세는 것이므로 가능한 모든 뿌요를 터뜨린 다임 카운트를 1 증가 시킨다 #include #include using namespace std; struct pos{int y, x;}; vector brokens; typedef vector t..