728x90
반응형

분류 전체보기 225

[백준/재귀/C++] 2003번 수들의합2

https://www.acmicpc.net/problem/2003 2003번: 수들의 합 2 첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다. www.acmicpc.net #include using namespace std; int n, m; int arr[10001]; int result = 0; void solve(int index, int tot){ // 시작 인덱스, 원소 합 if(index>n) return; if(tot == m){ result++; return; } solve(index+1, tot+arr[ind..

알고리즘 2023.01.11

[백준/BFS/C++] 5014번 스타트링크

https://www.acmicpc.net/problem/5014 5014번: 스타트링크 첫째 줄에 F, S, G, U, D가 주어진다. (1 ≤ S, G ≤ F ≤ 1000000, 0 ≤ U, D ≤ 1000000) 건물은 1층부터 시작하고, 가장 높은 층은 F층이다. www.acmicpc.net 유의할 점 엘레베이터로 이동가능한지 여부를 판단할 때 visited[] 를 이용한다 #include using namespace std; const int MAX = 1000001; int f, s, g, u, d; bool visited[MAX]; int path[MAX]; int result = 2e9; queue q; void bfs(int v){ visited[v] = true; q.push(v); p..

알고리즘 2023.01.11

[백준/BFS/C++] 1697번 숨바꼭질 *

https://www.acmicpc.net/problem/1697 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net #include using namespace std; const int MAX = 100001; int n, k; bool visited[MAX]; int path[MAX]; queue q; void bfs(int v){ path[v] = 0; visited[v] = true; q.push(v); while(!q.empty()){ int w = q.front(); if(..

알고리즘 2023.01.10

[백준/백트래킹/C++] 10971번 외판원 순회2 *

https://www.acmicpc.net/problem/10971 10971번: 외판원 순회 2 첫째 줄에 도시의 수 N이 주어진다. (2 ≤ N ≤ 10) 다음 N개의 줄에는 비용 행렬이 주어진다. 각 행렬의 성분은 1,000,000 이하의 양의 정수이며, 갈 수 없는 경우는 0이 주어진다. W[i][j]는 도시 i에서 j www.acmicpc.net #include using namespace std; int n; bool ch[11]; int ans = 1e9; int w[10][10]; void go(int start, int index, int cnt, int sum) { // 최초 출발지점, 현재 위치, 지나간 마을수, 이동비용 if(cnt == n){ if(w[index][start] ==..

알고리즘 2023.01.10

[백준/백트래킹/C++] 6603번 로또

https://www.acmicpc.net/problem/6603 6603번: 로또 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 번째 수는 k (6 < k < 13)이고, 다음 k개 수는 집합 S에 포함되는 수이다. S의 원소는 오름차순으로 www.acmicpc.net #include using namespace std; int k; int num[50], arr[50]; bool isused[50]; void backtrack(int k, int n){ if(k==6){ bool flag = true; int tmp = -1; for(int i=0; i arr[i]) flag = false; tmp = arr[i]; } if(flag){ for(in..

알고리즘 2023.01.09

[백준/백트래킹/C++] 15652번 N과 M (4)

https://www.acmicpc.net/problem/15652 15652번: N과 M (4) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net #include using namespace std; int n, m; int arr[8]; void backtrack(int k){ if(k==m){ for(int i=0; i

알고리즘 2023.01.08

[백준/백트래킹/C++] 15651번 N과 M (3)

https://www.acmicpc.net/problem/15651 15651번: N과 M (3) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net #include using namespace std; int n, m; int arr[8]; void backtrack(int k){ if(k==m){ for(int i=0; i

알고리즘 2023.01.08

[백준/백트래킹/C++] 15650번 N과 M (2) (조합)

https://www.acmicpc.net/problem/15650 15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net #include using namespace std; int n, m; int arr[9]; bool isused[9]; void backtrack(int k){ // 현재 k개 까지 수를 택했음 if(k==m){ for(int i=0; i> n >> m; // m의 개수만큼 0을 넣어줌 for(int i=0; i

알고리즘 2023.01.08
728x90
반응형