목록Algorithm/백준 (39)
서의 공간
[문제]: 15740번: A+B - 9 (acmicpc.net) 음수와 양수의 덧셈을 할 때는 절댓값이 작은 수에 9의 보수를 구해서 덧셈으로 바꾸어 풀었다. 두 수의 부호가 같다면 그냥 더하고 마지막에 부호를 결정만 한다. #include #include #include using namespace std; string operator+(string a, string b) { bool na = false; bool nb = false; string ret; if (a[0] == '-') { a.erase(begin(a)); if (a[0] == '0') na = false; else na = true; } if (b[0] == '-') { b.erase(begin(b)); if (b[0] == '0')..
[문제]: 14888번: 연산자 끼워넣기 (acmicpc.net) #include #include using namespace std; int n; int minr = numeric_limits::max(); int maxr = numeric_limits::min(); int arr[12]; int oper[4]; void solution(int k, int result) { if (k == n - 1) { if (minr > result) minr = result; if (maxr 0) { --oper[0]; solution(k + 1, result + arr[k + 1]); ++oper[0]; } if(oper[1]..
[문제]: 14889번: 스타트와 링크 (acmicpc.net) N과 M 문제를 푸는 방법과 비슷하게 풀었다. 핵심은 if(k == m) 안에 있는 코드이다. start 팀의 조합을 찾았을 때, 선택되지 않은 사람들은 link팀으로 넣고, s[][] 배열을 참조하여 각 팀의 능력치 증가량을 합산하여 차를 구해 리턴한다. 그리고 그 차들 중 최솟값이 바로 답이 된다. #include #include #include #include using namespace std; int n, m; int s[21][21]; int start[11]; int link[11]; bool picked[21]; int ret = numeric_limits::max(); int solution(int k, int p) { if..
[문제]: 15666번: N과 M (12) (acmicpc.net) #include #include using namespace std; int n, m; int vec[10]; int arr[10]; void solution(int k, int p) { if (k == m) { for (int i = 0; i m; for (int i = 0; i > vec[i]; sort(vec, vec + n); solution(0, 0); return 0; }
[문제]: 15665번: N과 M (11) (acmicpc.net) #include #include using namespace std; int n, m; int vec[10]; int arr[10]; void solution(int k) { if (k == m) { for (int i = 0; i m; for (int i = 0; i > vec[i]; sort(vec, vec + n); solution(0); return 0; }
[문제]: 15664번: N과 M (10) (acmicpc.net) #include #include using namespace std; int n, m; int vec[10]; int arr[10]; void solution(int k, int p) { if (k == m) { for (int i = 0; i m; for (int i = 0; i > vec[i]; sort(vec, vec + n); solution(0, -1); return 0; }
[문제]: 15663번: N과 M (9) (acmicpc.net) #include #include #include using namespace std; int n, m; int vec[10]; int arr[10]; bool picked[10]; void solution(int k) { if (k == m) { for (int i = 0; i m; for (int i = 0; i > vec[i]; sort(vec, vec + n); solution(0); return 0; }
[문제]: 15657번: N과 M (8) (acmicpc.net) #include #include using namespace std; int n, m; int vec[10]; int arr[10]; void solution(int k, int p) { if (k == m) { for (int i = 0; i m; for (int i = 0; i > vec[i]; sort(vec, vec + n); solution(0, 0); return 0; }
[문제]: 15656번: N과 M (7) (acmicpc.net) #include #include using namespace std; int n, m; int vec[10]; int arr[10]; void solution(int k) { if(k == m){ for (int i = 0; i m; for (int i = 0; i > vec[i]; sort(vec, vec + n); solution(0); return 0; }
[문제]: 15655번: N과 M (6) (acmicpc.net) #include #include using namespace std; int n, m; int vec[10]; int arr[10]; void solution(int k, int p) { if (k == m) { for (int i = 0; i m; for (int i = 0; i > vec[i]; sort(vec, vec + n); solution(0, -1); return 0; }