본문 바로가기

전체 글

(61)
백준 1753번: 최단경로 (C++) 문제 링크 : www.acmicpc.net/problem/1753 단순한 다익스트라 알고리즘 문제다. 내 블로그에 다익스트라 알고리즘에 대해 다 설명해 놓았다. 다익스트라 알고리즘 : wlshddlek.tistory.com/36?category=887632 #include #include #include using namespace std; vector a[20002]; int d[20002]; int INF = 987654321; void dijkstra(int start) { fill(&d[0], &d[20001], INF); priority_queue q; q.push(make_pair(0,start)); d[start] = 0; while (!q.empty()) { int node = q.top(..
백준 1717번: 집합의 표현 (C++) 문제 링크 : www.acmicpc.net/problem/1717 응용없는 단순한 유니온 파인드(disjoint set)알고리즘이다. 1-1. type이 0이면 두 노드들의 root를 합친다. -> d배열에 각 노드들의 부모를 가리키도록 저장한다.(재귀로 끝까지 가보면 root가 나오게 됨) 1-2. type이 1이면 두 노드의 집합 여부를 출력한다. (root노드가 같으면 결국 같은 집합임) #include using namespace std; int d[1000002]; int find_root(int a) //해당 집합의 root 찾아서 반환 { if (d[a] == a)return a; return find_root(d[a]); } void make_union(int a, int b) //두 집합..
백준 14891번: 톱니바퀴 (C++) 문제 링크 : www.acmicpc.net/problem/14891 특별한 알고리즘이 없는 단순 구현, 시뮬레이션 문제이다. 자세한 설명은 코드 주석으로 달아놨다. 1. 해당 톱니를 움직인다. 2. 왼쪽 톱니들을 확인하며 움직일 톱니들을 움직인다. 3. 오른쪽 톱니들을 확인하며 움직일 톱니들을 움직인다. 4. 점수들은 계산해준다. #include #include #include using namespace std; deque wheel[4]; void move_wheel(int id, int dir) //id톱니 dir방향으로 움직이기 { if (dir == -1) //반시계방향 { wheel[id].push_back(wheel[id][0]); wheel[id].pop_front(); } else //시..