일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 문제풀이
- 유니티
- 분할축 이론
- GJK
- Vector
- 내적
- Doubly Connected Edge List
- 백준
- Expanding Polytope Algorithm
- Unity
- C
- PS
- 리눅스
- 충돌 알고리즘
- C++
- c#
- AABB
- ubuntu
- 벡터
- 외적
- 수학
- uclidean algorithm
- SOH
- 다이나믹 프로그래밍
- 우분투
- 알고리즘
- Graham Scan
- linux
- 보로노이다이어그램
- dp
- Today
- Total
목록문제풀이 (18)
마이 플밍 블로그
1261번: 알고스팟 첫째 줄에 미로의 크기를 나타내는 가로 크기 M, 세로 크기 N (1 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 미로의 상태를 나타내는 숫자 0과 1이 주어진다. 0은 빈 방을 의미하고, 1은 벽을 의미 www.acmicpc.net 풀이 BFS로 풀고 flag로 벽을 부신 횟수를 넣으면 된다. 코드 #include using namespace std; int dx[4] = {1,-1,0,0}; int dy[4] = {0,0,1,-1}; int board[101][101]; int flag[101][101]; int n, m; int minAnswer = 1000000000; bool InMap(int x,int y){ if(0
18223번: 민준이와 마산 그리고 건우 입력의 첫 번째 줄에 정점의 개수 V와 간선의 개수 E, 그리고 건우가 위치한 정점 P가 주어진다. (2 ≤ V ≤ 5,000, 1 ≤ E ≤ 10,000, 1 ≤ P ≤ V) 두 번째 줄부터 E개의 줄에 걸쳐 각 간선의 정보 www.acmicpc.net 풀이 다익스트라를 이용해서 푼다. 1→P→N 순으로 가는 최단거리가 1→N 최단거리보다 작거나 같으면 SAVE HIM을 아니면 GOOD BYE를 출력한다 코드 #include #define V 5001 using namespace std; vector adj[V]; int n,e,p; int Dijkstra(int src, int nend){ vector dist(V, 100000000); dist[src] = ..
1504번: 특정한 최단 경로 첫째 줄에 정점의 개수 N과 간선의 개수 E가 주어진다. (2 ≤ N ≤ 800, 0 ≤ E ≤ 200,000) 둘째 줄부터 E개의 줄에 걸쳐서 세 개의 정수 a, b, c가 주어지는데, a번 정점에서 b번 정점까지 양방향 길이 존 www.acmicpc.net 풀이 1. 첫노드→N1 로가는 짧은경로 + N1 → N2로가는 경로 + N2에서 n번째노드로 가는 경로 2. 첫노드→N2 로가는 짧은경로 + N2 → N1로가는 경로 + N1에서 n번째노드로 가는 경로 둘중 짧은 것이 답이다. 코드 #include using namespace std; vector adj[801]; int n,e; int v1,v2; int Dijkstra(int src, int nend){ vecto..
11779번: 최소비용 구하기 2 첫째 줄에 도시의 개수 n(1≤n≤1,000)이 주어지고 둘째 줄에는 버스의 개수 m(1≤m≤100,000)이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스 www.acmicpc.net 풀이 다익스트라로 길을 저장하면서 풀면 된다. 코드 #include using namespace std; vector adj[1001]; int n,e; int nstart,nend; void Dijkstra(int src){ vector dist(1001, 100000002); dist[src] = 0; int path[1001]; priority_queue q; q.push(make_pair(0,src)); while(!q.em..
2234번: 성곽 첫째 줄에 두 정수 N, M이 주어진다. 다음 M개의 줄에는 N개의 정수로 벽에 대한 정보가 주어진다. 벽에 대한 정보는 한 정수로 주어지는데, 서쪽에 벽이 있을 때는 1을, 북쪽에 벽이 있을 때는 2를, www.acmicpc.net 풀이 비트연산자를 이용해서 방 구역 나누기 > 각 방 넓이 구하기 > 방 합치기 순으로 진행해서 풀었다. 코드 #include using namespace std; int board[51][51]; int room[51][51]; int roomArea[2505]; int roomNum = 1; int dx[4] = {0,0,-1,1}; int dy[4] = {-1,1,0,0}; int answer = 10000000; int h,w; int maxArea..
14442번: 벽 부수고 이동하기 2 첫째 줄에 N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 1,000), K(1 ≤ K ≤ 10)이 주어진다. 다음 N개의 줄에 M개의 숫자로 맵이 주어진다. (1, 1)과 (N, M)은 항상 0이라고 가정하자. www.acmicpc.net 풀이 이전에 했던 1600 말이 되고픈 원숭이랑 비슷하게 풀었다. 남은 벽부수기 횟수에따른 flag를 배열을 만들고 남은거리를 저장했다. 코드 #include using namespace std; int board[1001][1001]; int flag[1001][1001][11]; int dx[4] = {0,0,-1,1}; int dy[4] = {-1,1,0,0}; int w,h,k; int answer = 10000000; ..
1600번: 말이 되고픈 원숭이 첫째 줄에 정수 K가 주어진다. 둘째 줄에 격자판의 가로길이 W, 세로길이 H가 주어진다. 그 다음 H줄에 걸쳐 W개의 숫자가 주어지는데, 0은 아무것도 없는 평지, 1은 장애물을 뜻한다. 장애물이 있 www.acmicpc.net 풀이 남은 나이트 이동 횟수에 따라 이동거리를 저장하는 배열을 만들어서 bfs로 풀었다 코드 #include using namespace std; int dhx[8] = {-2,-1,1,2,-2,-1,1,2}; int dhy[8] = {1,2,2,1,-1,-2,-2,-1}; int dx[4] = {0,0,-1,1}; int dy[4] = {-1,1,0,0}; int board[201][201]; int flag[201][201][31]; int ..
2146번: 다리 만들기 여러 섬으로 이루어진 나라가 있다. 이 나라의 대통령은 섬을 잇는 다리를 만들겠다는 공약으로 인기몰이를 해 당선될 수 있었다. 하지만 막상 대통령에 취임하자, 다리를 놓는다는 것이 아깝다 www.acmicpc.net 풀이 bfs가 아닌 dfs로 풀어서 조금 애먹었던 문제이다. 섬들에 번호를 매기고 각 섬의 가장자리 부분들의 위치를 저장한뒤 가장자리 에서 부터 시작해서 다른 섬으로 다리를 점점 넓혀나가면 된다. 코드 #include using namespace std; int board[101][101]; int flag[101][101]; int region[101][101]; int regionNum = 1; int n; int dx[4] = {0,0,-1,1}; int dy[..