title: "C++ Skills" excerpt: "Skills by C++" category: Cpp-Reference tags: [ C++, , , iterator, sort, permutation, combination, dfs, bfs, brute-force, union-find, merge, set_union, set_intersection, set_difference, lower_bound, upper_bound, , ] toc: true Skills by C++ 모든 부분집합 by bit & bit & 연산으로 모든 부분집합 구하기 #include using namespace std; vector getSubsets(vector arr){ vector totalSet; // 결과 Set i..
title: "C++ Reference" excerpt: "C++ Reference" category: Language-Reference tags: [ C++, , , vector, string, queue, priority_queue map, set, multimap, multiset, iterator, sort, permutation, combination, dfs, bfs, brute-force, union-find, merge, set_union, set_intersection, set_difference, , ] toc: true Skills by C++ 모든 부분집합 by bit & bit & 연산으로 모든 부분집합 구하기 #include using namespace std; vector ge..
문제 링크 코딩테스트 연습 - 가장 먼 노드 6 [[3, 6], [4, 3], [3, 2], [1, 3], [1, 2], [2, 4], [5, 2]] 3 programmers.co.kr 풀이 문제가 한 노드에서 모든 노드의 최단 거리를 구하는 문제로 BFS로 바로 방문을 검사하며 구현하였다. // init 1. 큐 선언 2. 방문 배열 선언 3. 그래프(multimap) 선언 4. 1번 노드로부터 최단 거리 배열 선언 // init(Graph) 파라미터로 주어진 edge를 순회하면서 multimap에 양방향으로 추가한다. // process(BFS) 1. 먼저 1번 노드와 연결된 노드들을 큐에 push 2. push 한 노드들은 모두 방문 처리를 한다. 3. push 한 노드들은 1번 노드로부터 최단 거..
문제 링크 코딩테스트 연습 - 네트워크 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있�� programmers.co.kr 풀이 DFS/BFS 파트에 있지만 문제를 보고 union-find가 먼저 떠올라서 union-find로 풀었다. // 요약 // find_root() - root를 찾아주는 재귀로 구현한 함수 // init 자신을 root로 설정 // process 인접행렬 computers가 대각선을 기준으로 대칭되므로 연산을 줄이기 위해 반복문을 최소한으로 돌게한다. (i = 0~n-1일 때, j=i+1 ~ n이다) { 연결돼있다면, 각 i와 j의 roo..
문제 링크 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+ programmers.co.kr 풀이 문제에서 중간에 타겟넘버가 되는 경우가 없고 최종까지 가야 타겟넘버로 지정하는 것이므로 "완전탐색"이다. 재귀로 최종까지 가게되면(index값이 size랑 같을 경우) target이 같은지 여부에 따라 return 1과 0을 나누었다. 더보기 #include #include #include #include using namespace std; // +, - 만 하기 // 숫자가 담긴 배열 nu..