자기개발👨‍💻 142

[Python] 백준 15650, 15649 -백트래킹 알고리즘

백준 15649 nPm 순열을 구해주면 된다 import sys input = sys.stdin.readline n,m = map(int, input().split()) chk = [False]*(n+1) # 인덱스 0 사용 x re = [] def recur(num): if num == m: # 실수했음 print(' '.join(map(str, re))) return for i in range(1,n+1): # 1부터 시작이지 n+1까지 범위 늘려야함 if (chk[i] == False): chk[i] = True re.append(i) recur(num+1) chk[i]=False re.pop() recur(0) 백준 156450 위 문제처럼 순열을 구하는건데, 중복된 내용만 제거하면 된다. imp..

[C] 백준 10870 피보나치 수 5

https://www.acmicpc.net/problem/10870 10870번: 피보나치 수 5 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net #include int Fibonacci (int a) { if (!a) return 0; int x=0, y=1, tmp=0, i; for(i=1;i

[C++] 백준 1197 최소 스패닝 트리

https://www.acmicpc.net/problem/1197 1197번: 최소 스패닝 트리 첫째 줄에 정점의 개수 V(1 ≤ V ≤ 10,000)와 간선의 개수 E(1 ≤ E ≤ 100,000)가 주어진다. 다음 E개의 줄에는 각 간선에 대한 정보를 나타내는 세 정수 A, B, C가 주어진다. 이는 A번 정점과 B번 정점이 www.acmicpc.net #include #include #include using namespace std; int parent[10001]; int v, e, result=0; // 재귀로 구성 // 최종 부모 노드를를 찾기 위한 작업 int getParent(int parent[], int x){ if(parent[x] == x) return x; // 최종 부모에 도달..

Union-Find

https://baebalja.tistory.com/317 [백준 1197번 / C++ / 크루스칼] 최소 스패닝 트리 MST 그래프를 구하기 위해서는 크루스칼과 프림 알고리즘이 존재하는데 이번 문제에서는 크루스칼을 이용해서 구현하였다. 해당 문제를 글로 설명하기에는 개념적인 부분이 많이 필요하기 때문 baebalja.tistory.com https://m.blog.naver.com/ndb796/221230967614 17. Union-Find(합집합 찾기) Union-Find(유니온-파인드)는 대표적인 그래프 알고리즘입니다. 바로 '합집합 찾기'라는 의미를 가진 알... blog.naver.com #include using namespace std; // 재귀로 구성 // 최종 부모 노드를를 찾기 위한..

[C++] 백준 2606 바이러스

https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net #include #include #include using namespace std; vector a[101]; int com, net; bool check[101]; int cnt=0; void dfs(int node){ check[node] = true; cnt++; for (int i=0;i> com >> net; int x, y; for (int i=0;i> x >> y ; a[x].push_b..

[C++] 백준 9372 상근이의 여행

https://www.acmicpc.net/problem/9372 9372번: 상근이의 여행 첫 번째 줄에는 테스트 케이스의 수 T(T ≤ 100)가 주어지고, 각 테스트 케이스마다 다음과 같은 정보가 주어진다. 첫 번째 줄에는 국가의 수 N(2 ≤ N ≤ 1 000)과 비행기의 종류 M(1 ≤ M ≤ 10 000) 가 www.acmicpc.net #include #include using namespace std; int tc; int main(){ int m,n; cin >> tc; while(tc--){ cin >> m >> n; for (int i=0;i> a >> b; } cout