알고리즘/백준(30)
-
[백준] 11286 절댓값 힙 (c++)
https://www.acmicpc.net/problem/11286 11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net #include #include #include using namespace std; struct comp { bool operator()(int a, int b) { if (abs(a) == abs(b)) { return a > b; } else { return abs(a) > abs(b); } } }; priority_queuepq; long long int count_m..
2022.07.10 -
[백준] 연결 요소의 개수 c++
https://www.acmicpc.net/problem/11724 11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주 www.acmicpc.net #include #include #include using namespace std; priority_queuepq; bool arr[1001][1001]; bool visited[1001]; int result; int n, m; void dfs(int num) { visited[num] = true; for (int i = 1; i..
2022.07.09 -
[백준] 1927 최소 힙 c++
#include #include #include using namespace std; priority_queuepq; int main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n; cin >> n; int k; for (int i = 0; i > k; if (k != 0) { pq.push(k); } else { if (pq.empty()) { cout
2022.07.08 -
[백준] 1780 종이의 개수 (c++)
#include #include #include using namespace std; int n; long long int arr[3001][3001]; int count_number[3]; string str, tmp; void bh(int x, int y, int n) { int first = arr[x][y]; bool flag = true; for (int i = x; i < x + n; i++) { for (int j = y; j < y + n; j++) { if (arr[i][j] != first) { flag = false; break; } } } if (flag) { count_number[first + 1]++; } else { for (int a = x; a < x + n; a += n..
2022.07.07 -
[백준] 잃어버린 괄호 1541 c++
1. 95%에서 멈추는 현상 (1개를 넣었을 때 예외 처리해야 됨) 1. 숫자랑 기호를 구별한다. 2. 만약에 +가 있다면 앞뒤로 더해서 새로운 배열에 넣는다. 3. 마지막 기호가 -,+에 따라서 마지막 배열에 더 해줄지, 추가할지 정한다. 4. 배열에 있는 수들은 이제 계속 빼 주면 된다. #include #include #include using namespace std; vector vec; vector pm; vector k; string str, tmp; int main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> str; long long int point = 0; for (long long int i = 0; i..
2022.07.06 -
[백준] 11444 피보나치 수 6
맨처음에 DP인줄 알았는데 분할정복이었다. 행렬의 연산으로 풀어주면 쉽게 풀 수 있다. #include #include #include #include #include #include #include #define INF 987654321 using namespace std; vector arr[5001]; bool ch[5001]; int main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int N, Q; cin >> N >> Q; for (int i = 0; i > a >> b >> c; arr[a].push_back({ b,c }); arr[b].push_back({ ..
2022.07.05