일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Vector
- c#
- 보로노이다이어그램
- 분할축 이론
- 충돌 알고리즘
- 백준
- Expanding Polytope Algorithm
- linux
- Graham Scan
- 알고리즘
- 문제풀이
- PS
- C
- Doubly Connected Edge List
- 수학
- C++
- dp
- 리눅스
- ubuntu
- 내적
- Unity
- 유니티
- SOH
- GJK
- 우분투
- uclidean algorithm
- AABB
- 다이나믹 프로그래밍
- 외적
- 벡터
- Today
- Total
목록분류 전체보기 (62)
마이 플밍 블로그
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 풀이 DP로 푸는 문제다. 모든 경우의 수를 탐색해서 제일 빨리 SCV를 다 처치하는 경우를 찾는다 코드 #include #include #include #include #include #include using namespace std; #define MAX 987432 int N; int SCVHP[4]; int SCV[61][61][61]; int n = 0; void Mutalisk(int scv1..
2281번: 데스노트 첫째 줄에 n(1 ≤ n ≤ 1,000), m(1 ≤ m ≤ 1,000)이 주어진다. m은 노트의 가로 칸의 개수(폭, 너비)이다. 다음 n개의 줄에는 각 사람의 이름의 길이가 노트에 적어야 할 순서대로 주어진다. 각 길이는 m www.acmicpc.net 풀이 DP를 이용해 푸는 문제다. 한줄 넘기고 이름을 쓰는 경우와 넘기지 않고 이어서 이름을 쓰는 경우 두가지로 나누어서 풀면된다. 코드 #include #include #include using namespace std; int m,n; int name[1001]; int dp[1001][1001] = {0}; int DeathNote(int nameIndex, int length) { if (nameIndex >= n) { r..
11559번: Puyo Puyo 총 12개의 줄에 필드의 정보가 주어지며, 각 줄에는 6개의 문자가 있다. 이때 .은 빈공간이고 .이 아닌것은 각각의 색깔의 뿌요를 나타낸다. R은 빨강, G는 초록, B는 파랑, P는 보라, Y는 노랑이다. www.acmicpc.net 풀이 딱히 어렵진 않았는데 문제 해석을 잘못해서 뿌요뿌요 플레이 영상보면서 고치느라 시간이 조금 걸렸다. 아래쪽부터 탐색을 시작해서 해당 주변에 같은 타일이 있다면 큐와 region 벡터에 담고 그 타일을 탐색한다. 더이상 주변에 같은 타일이 없을 경우 region 벡터의 사이즈가 4이상 이라면 region의 요소들을 초기화하고 해당 칸을 빈칸으로 한다. 만약 사이즈가 3 이하면은 그냥 초기화만 한다. 이런식으로 한번 모든 타일을 쭉 탐색..
14238번: 출근 기록 스타트링크에는 세명의 직원이 일을 하고 있다. 세 직원의 이름은 강호(A), 준규(B), 수빈(C) 이다. 이 회사의 직원은 특별한 룰을 가지고 있는데, 바로 하루에 한 명만 출근한다는 것이다. 3일간의 www.acmicpc.net 코드 #include #include #include #include #include using namespace std; int workerCount[3]; bool dp[51][51][51][3][3] = { false }; char ans[51]; bool DP(int a, int b, int c, int bbefore, int before) { if (workerCount[0] == a && workerCount[1] == b && worker..
https://www.acmicpc.net/problem/16930 16930번: 달리기 진영이는 다이어트를 위해 N×M 크기의 체육관을 달리려고 한다. 체육관은 1×1 크기의 칸으로 나누어져 있고, 칸은 빈 칸 또는 벽이다. x행 y열에 있는 칸은 (x, y)로 나타낸다. 매 초마다 진영이는 www.acmicpc.net 풀이 푸는데 좀 많이 애먹은 문제였다. 계속해서 96% 부분에서 시간초과가 나서 고민 했는데 결국 찾긴 찾았다. 이 문제는 BFS로 풀었다. 한 노드를 탐색하고 K 만큼 주변 노드들을 탐색한다. 해당 노드가 방문된 횟수가 현재 방문 횟수보다 크거나 같다면 탐색을 계속하고 작으면 다른 방향으로 탐색을 시작한다. 방문한 노드가 처음 방문한 노드라면 큐에 담고 아니라면 방문횟수를 업데이트하고..
https://www.acmicpc.net/problem/1806 1806번: 부분합 첫째 줄에 N (10 ≤ N > N >> S; minLength = N + 1; for (int i = 0; i > key; num.pus..
12851번: 숨바꼭질 2 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 www.acmicpc.net #include #include using namespace std; int N, K; int findCount = 0; int minFindTime = 1000000000; int flag[100001] = { 0 }; void FindTime(int index, int time) { queue q; q.push(make_pair(index, time)); while (q.size() > 0) { int pos = q.fro..
https://www.acmicpc.net/problem/14719 14719번: 빗물 첫 번째 줄에는 2차원 세계의 세로 길이 H과 2차원 세계의 가로 길이 W가 주어진다. (1 ≤ H, W ≤ 500) 두 번째 줄에는 블록이 쌓인 높이를 의미하는 0이상 H이하의 정수가 2차원 세계의 맨 왼쪽 위치 www.acmicpc.net #include #include #include #include #include using namespace std; int H, W; int Block[510]; int main() { scanf("%d", &H); scanf("%d", &W); for (int i = 0; i < W; i++) { scanf("%d", &Block[i]); } int totalRain = 0;..