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..
문제 링크 코딩테스트 연습 - 여행경로 [[ICN, SFO], [ICN, ATL], [SFO, ATL], [ATL, ICN], [ATL,SFO]] [ICN, ATL, ICN, SFO, ATL, SFO] programmers.co.kr 풀이 주어진 조건을 잘 봐야겠다는 생각이 드는 문제였다. [조건] 1. 주어진 항공권 모두 사용 2. 가능한 경로가 다수 개일 경우, 알파벳 순서가 앞서는 경로 조건 1은 깊이(depth)를 이용하여 모두 방문했다는 것을 인지했다. 조건 2는 미리 도착지에 대해 내림차순하여 마지막으로 갱신되는 것이 알파벳 순서가 앞서는 것으로 처리했다. ++ 그리고 만약에 중간에 경로가 불가능해지는 것에 대해서 탈출 키워드 '#'을 사용하여 return 되는 것이 '#'이라면 자신을 호출했..
문제 링크 코딩테스트 연습 - 네트워크 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 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..