본문 바로가기

코딩 테스트

(74)
프로그래머스 - 섬 연결하기 #include #include #include using namespace std;bool Compare(vector& a, vector& b){ return a[2] & parent, int x){ if(parent[x] != x) { parent[x] = Find(parent, parent[x]); } return parent[x];}void Union(vector& parent, vector& rank, int x, int y){ int node1 = Find(parent, x); int node2 = Find(parent, y); if(node1 != node2) { if(rank[node1] > rank[node2..
백준 1644 소수의 연속합 소수 먼저 구하고 투 포인터로 해결 #include #include #include #include using namespace std;int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n; cin >> n; vector nums(n+1, true); vector arr; for (int i = 2; i n) { sum -= arr[startIdx]; startIdx++; } else { answer++; if (endIdx
백준 - 12865 배낭 문제 무게를 인덱스로 활용 할 수 있어야한다.바텀업을 사용한다면 i,j 를 1부터 사용할 수 있다는 생각을 해야한다. #include #include #include #include #include using namespace std;vector> dp(101, vector(100001, 0));int Dp(vector>& thing, int n, int k){ for (int i = 1; i > n >> k; vector> thing(101); for (int i = 1; i > w >> v; thing[i].first = w; thing[i].second = v; } cout
백준 1010 - 다리 놓기 일반적인 Fac 을 사용하면 범위가 넘어가니까 답을 계속 나누어주어야한다.#include #include #include #include #include using namespace std;int main(void){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int t; cin >> t; for (int i = 0; i > n >> m; long long result = 1; int temp = 1; for (int j = m; j > m - n; --j) { result *= j; result /= temp; temp++; } cout
백준 1707 - 이분 그래프 탐색의 시작점을 반복문을 돌리지만 이전에 이미 방문했다면 탐색하지 않는것이 추가 되어야했다.#include #include #include #include #include using namespace std;vector> edge;vector visited(20001, false);vector color(20001, -1);bool answer = true;void Dfs(int vertex){ if (!visited[vertex]) { visited[vertex] = true; color[vertex] = 0; } for (int i = 0; i > n; for (int o = 0; o > v >> e; edge.clear(); edge.resize(v + 1); visited.clear..
백준 2559 투 포인터를 활용한 문제 해결 #include #include #include #include #include using namespace std;int main(void){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n, k; cin >> n >> k; vector arr(n); for (int i = 0; i > arr[i]; } int sum = 0; int i = 0; int start = 0; int end = k - 1; for (i = 0; i
프로그래머스 - 단속 카메라 그리디를 사용한 해결 #include #include #include #include using namespace std;int solution(vector> routes) { int answer = 0; sort(routes.begin(), routes.end(), [](const vector& a, const vector& b) { return a[1]
백준 1806 - 투포인터 #include #include #include #include #include using namespace std;int main(void){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n, s; cin >> n >> s; vector arr(n); for (int i = 0; i > arr[i]; } int startIdx = 0; int endIdx = 0; int ans = INT_MAX; int sum = 0; sum += arr[startIdx]; while (startIdx = s) { int num = endIdx - startIdx + 1; sum -= arr[startIdx]; startIdx++; i..