일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- SOH
- Vector
- 유니티
- linux
- 다이나믹 프로그래밍
- 보로노이다이어그램
- C
- 외적
- C++
- 리눅스
- 내적
- Unity
- Doubly Connected Edge List
- GJK
- 알고리즘
- 백준
- Expanding Polytope Algorithm
- 문제풀이
- 충돌 알고리즘
- AABB
- PS
- Graham Scan
- dp
- c#
- ubuntu
- uclidean algorithm
- 수학
- 벡터
- 우분투
- 분할축 이론
- Today
- Total
목록C (5)
마이 플밍 블로그
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[..
5567번: 결혼식 예제 1의 경우 2와 3은 상근이의 친구이다. 또, 3과 4는 친구이기 때문에, 4는 상근이의 친구의 친구이다. 5와 6은 친구도 아니고, 친구의 친구도 아니다. 따라서 2, 3, 4 3명의 친구를 결혼식에 초대 www.acmicpc.net 풀이 1번 노드부터 시작해서 연결된 간선들을 탐색하며 한번 방문했으면 답에 추가하고 이미 방문했다면 연결된 간선들을 탐색만 한다. 탐색을 할때마다 카운트를 1증가시키며 카운트가 2가되면 answer을 반환한다. 코드 #include using namespace std; int n, m; int flag[501]; vector friends[501]; int Find(int u, int c){ int answer = 0; if(flag[u] == 0..
1937번: 욕심쟁이 판다 n × n의 크기의 대나무 숲이 있다. 욕심쟁이 판다는 어떤 지역에서 대나무를 먹기 시작한다. 그리고 그 곳의 대나무를 다 먹어 치우면 상, 하, 좌, 우 중 한 곳으로 이동을 한다. 그리고 또 그곳에 www.acmicpc.net 풀이 평범하게 모든타일에서 시작해서 탐색하면 시간초과에 걸린다. 메모이제이션을 이용하면 쉽게 통과할 수 있다. 코드 #include using namespace std; int board[501][501]; int dp[501][501]; int dx[4] = {0,0,-1,1}; int dy[4] = {1,-1,0,0}; int answer = 0; int n; bool InMap(int x, int y){ if( 0 n; priority_queue..
11780번: 플로이드 2 첫째 줄에 도시의 개수 n이 주어지고 둘째 줄에는 버스의 개수 m이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스의 출발 도시의 번호가 www.acmicpc.net 풀이 플로이드-워셜 알고리즘에서 경로추적을 추가하면 되는 문제다. 문제는 쉬웠으나 못가는 경우 0을 출력하는걸 깜빡해서 여러번 틀렸다. 코드 #include #include using namespace std; #define CITY 105 #define INF 200000000 int map[CITY][CITY]; int nextNode[CITY][CITY]; int n, m; void FloydWarshall(){ for(int i = 1; i n >> m..
memset 함수는 메모리의 값을 원하는 범위만큼 값을 변경 시켜주는 함수다. 더보기 void* memset(void* ptr, int value, size_t num); 첫번째 ptr은 메모리의 시작 주소 두번째 value는 바꿀 값 세번째 num은 메모리 길이를 뜻한다. 이 길이는 바이트 단위로써 메모리 크기 한조각단위의 길이를 뜻한다. sizeof(타입) 으로 하면 된다. 함수가 제대로 작동하면 맨 처음인자인 ptr이 반환되고 실패하면 NULL을 반환한다. 예제 #include #include using namespace std; int main() { char arr[20]; cin >> arr; memset(arr, 'b', 3 * sizeof(char));; cout