본문 바로가기

백준244

백준 1238 c++ - [PlusUltraCode] [필자 사고] 문제를 분석해 보면 X라는 지점에 간 거리와 X에서 부터 본래의 자기 집으로 간 거리의 합이 가장 긴 값을 구하는 문제이다. 다익스트라 알고리즘을 사용하면 쉽게 풀 수 있는 문제이다. 1. 각 지점에서 다익스트라 알고리즘을 사용하고 X까지의 거리를 임의이 배열에 저장해 놓는다. 2. 다음으로 X에서 다익스트라 알고리즘을 사용하여 임의의 배열에 더하여 저장해 놓는다. 3. 임의이 배열에서 가장 큰 값이 정답이다. [소스 코드] #include #include #include #include #include using namespace std; int N, M, X; typedef pair Node; vector Arr; vector visited; vector pathLoad; vector .. 2024. 2. 20.
백준 1967 c++ -[PlusUltraCode] [필자 사고] 트리의 지름문제이다. 처음보면 당황할 수 있지만 한번만 이해하면 쉽게 풀 수 있는 문제이다. 트리의 지름이란 임의의 두점을 선택했을때 가장 거리가 긴 노드간의 길이를 말한다. 지름을 구하기 위해서는 다음과 같다. 1. 임의의 노드 하나를 선택하여 가장 거리가 먼 노드를 구한다. 2. 가장 거리가 먼 노드에서 다시 시작하여 가장 거리가 먼 노드를 또 구한다. 3. 2번째로 구한 가장 거리가 먼 노드의 길이가 지름의 길이이다. 문제를 해결하는 알고리즘은 dfs 다익스트라 등등 많이 있고 필자는 다익스트라를 이용하여 해결했다. [소스 코드] #include #include #include #include using namespace std; typedef pair Node; vector Arr;.. 2024. 2. 20.
백준 1167 c++ - [PlusUltraCode] [필자 사고] 트리의 지름을 구하라는 문제이다. 먼저 트리의 지름이란 임의이 두 점을 골랐을 때 가장 거리가 긴 길이가 트리의 지름이다. 먼저 임의이 아무 지점에서 각 지점에서의 최단 거리를 구한다. 최단거리중 거리가 가장 긴 IDX를 골라 시작점으로 다시 최단 거리를 구하게 되면 가장 거리가 긴 지점이 나오게 된다. #include #include #include using namespace std; typedef pair Node; const int MAX_NUM = 10000000; vector Arr; vector visited; vector pathLoad; int N; priority_queue pq; void Input() { cin >> N; Arr.resize(N + 1); pathLoa.. 2024. 2. 20.
백준 2166 c++ -[PlusUltraCode] [필자사고] 고등학교 때 배운 신발끈 공식을 적용하면 쉽게 풀 수 있는 문제이다 x1 x2 x3 x1 y1 y2 y3 y1 (x1*y2+x2*y3+x3*y1)-(x2*y1+x3*y2+x1*y3)= ccw 문제에서 다각형의 넓이를 구해야 되므로 x3,y3을 원점이라 하고 각 선분마다 ccw값을 구하고 결과값에 더해준다. 마지막으로 절대값을 취해주고 2로 나눠주면 답이 나온다. #include #include #include #include using namespace std; int N; long x[10001]; long y[10001]; //x1 x2 0 x1 //y1 y2 0 y1 //x1*y2 -x2*y1; void Input() { cin >> N; for (int i = 0; i < N; i++.. 2024. 2. 19.