줌코딩의 코딩일기
Zoom in Coding
-
(백준 알고리즘 문제풀이) 1655번 가운데를 말해요
문제 문제 링크 어떻게 접근할 것인가 최소힙과 최대힙을 두개를 놓고 진행해라 최대힙 앞에 최소힙을 뒤에 아래 그림과 같이 준비해서 최대힙의 max값이 mid를 가지게 한다. 여기에서 포인트는 최대힙의 개수를 최소힙의 개수 + 1개 이하로 맞추는 것이다. 이를 위해 현재 개수를 보고 어느 힙에 넣을지 결정한다. 이렇게 진행하다가 최대힙의 최대값이 최소힙의 최소값보다...
-
(백준 알고리즘 문제풀이) 1197번 최소 스패닝 트리, 1922번 네트워크 연결
문제 1197번 문제 링크 1922번 문제 링크 어떻게 접근할 것인가 그동안 알고 있던 유니온 파인드를 이용해서 풀었다. 근데 사이클체크를 더 효율적으로 하면서 진행하는 코드가 있어서 그것을 공유하고자 한다. 코드 #include <cstdio> #include <cstring> #include <vector> #include <algorithm> #define X first #define Y second using namespace std; using ll = long...
-
(알고리즘) LCA 알고리즘 + C++ 예제코드
LCA란 LCA란 Lowest Common Ancestor의 약자로 트리 속 두 노드의 가장 가까운 조상 노드를 의미한다. 이것을 BFS나 DFS를 이용해 모든 경로를 훑어봄으로써 두 노드 사이의 같은 조상을 찾을 수도 있겠지만 이를 더욱 빠르게 하기 위해 만든 알고리즘이 LCA 알고리즘이다. LCA 알고리즘 방법은 간단하다. 1.트리를 만들고 각 노드의 조상들을 저장한다. 2.두...
-
(백준 알고리즘 문제풀이) 9663번 N-Queen
문제 문제 링크 어떻게 접근할 것인가 하나의 돌을 놓고 놓을 수 있는 돌을 찾아서 놓고 하는 식으로 진행했다. 그래서 총 iteration을 다 돌았을 때 가능했던 횟수를 출력했다. 초기 코드(시간 초과) #include <cstdio> int n, cnt, arr[14][14]; int d[4][2] = { {1, -1}, {1, 1}, {-1, 1}, {-1, -1} }; void...
-
(백준 알고리즘 문제풀이) 2661번 좋은수열
문제 문제 링크 어떻게 접근할 것인가 단순하게 생각해보았다. 숫자를 하나씩 놓으면서 나쁜 수열을 만드는지를 확인해보고 나쁜 수열을 만든다면 손절하고 아니면 계속해서 다음 수를 놓아갔다. 최소값이기 때문에 항상 1부터 놓아보면서 적절한 값을 만들었다. 코드 #include <cstdio> int n, num[81]; int comp(int a, int b){ int i = a, j = b;...