[백준] 15661 링크와 스타트
2021. 2. 20. 20:07
Problem set
15661번: 링크와 스타트 첫째 줄에 N(4 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에 S가 주어진다. 각 줄은 N개의 수로 이루어져 있고, i번 줄의 j번째 수는 Sij 이다. Sii는 항상 0이고, 나머지 Sij는 1보다 크거나 같고, 100 www.acmicpc.net #include #include #include using namespace std; int s[20][20]; int n; int go(int index, vector &first, vector &second) { if (index == n) { if (first.size() == 0) return -1; if (second.size() == 0) return -1; int t1 = 0; int t2 = 0; for ..
[백준] 14889 스타트와 링크
2021. 2. 20. 20:05
Problem set
14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net #include #include #include using namespace std; int s[20][20]; int n; int go(int index, vector &first, vector &second) { if (index == n) { if (first.size() != n/2) return -1; if (second.size() != n/2) return -1; int t1 = 0; int t2 = 0; for (int i=0; i t2)) { ans = t2; } se..
[백준] 14501 퇴사
2021. 2. 20. 20:04
Problem set
14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net #include using namespace std; const int inf = -100000000; int t[21]; int p[21]; int n; int ans = 0; void go(int day, int sum) { if (day == n+1) { if (ans n+1) { return; } go(day+1, sum); go(day+t[day], sum+p[day]); } int main() { cin >> n; for (int i=1; i> t[i] >> p[i]; } go(1, 0); cout
[백준] 1759 암호 만들기
2021. 2. 20. 20:03
Problem set
1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다. www.acmicpc.net #include #include #include #include using namespace std; bool check(string &password) { int ja = 0; int mo = 0; for (char x : password) { if (x == 'a' || x == 'e' || x == 'i' || x == 'o' || x == 'u') { mo += 1; } else { ja += 1; } } return ja >= 2 && mo >= 1; } v..
[백준] 9095 1, 2, 3 더하기
2021. 2. 20. 20:01
Problem set
9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net #include using namespace std; int go(int sum, int goal) { if (sum > goal) { return 0; } if (sum == goal) { return 1; } int now = 0; for (int i=1; i> t; while (t--) { int n; cin >> n; cout
[백준] 6603 로또
2021. 1. 21. 23:46
Problem set
6603번: 로또 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 번째 수는 k (6 > n; if (n == 0) { break; } vector a(n); for (int i=0; i> a[i]; } vector d; for (int i=0; i
[백준] 10971 외판원 순회 2
2021. 1. 21. 23:45
Problem set
10971번: 외판원 순회 2 첫째 줄에 도시의 수 N이 주어진다. (2 ≤ N ≤ 10) 다음 N개의 줄에는 비용 행렬이 주어진다. 각 행렬의 성분은 1,000,000 이하의 양의 정수이며, 갈 수 없는 경우는 0이 주어진다. W[i][j]는 도시 i에서 j www.acmicpc.net #include #include #include using namespace std; int w[20][20]; int main(){ int n; scanf("%d",&n); for(int i=0;i
[백준] 10819 차이를 최대로
2021. 1. 21. 23:43
Problem set
10819번: 차이를 최대로 첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다. www.acmicpc.net #include #include #include using namespace std; int calculate(vector &a) { int sum = 0; for (int i=1; i> n; vector a(n); for (int i=0; i> a[i]; } sort(a.begin(), a.end()); int ans = 0; do { int temp = calculate(a); ans = max(ans,temp); } while(next_permutation(a.begin(..