728x90
반응형

BOJ 114

백준, BOJ, 12865번 C++ [CPP]

음 아주 어렵진 않지만 생각하기 어려운 문제다. https://www.acmicpc.net/problem/12865 #맞은 풀이 #include using namespace std; //가장 가치가 크게 해야함. 가장 큰 무게가 가장 큰 가치를 보장하지 않음 //모든 것을 보고 넣을 지 말 지 정해야 함. (Brute Force지만).. 정말 다조사하면 시간초과남 //똑똑하게 조사해야함. 2^100 연산이 필요. 캐싱 필요( 값 저장) // 담을 수 있는지, 없는지 // 담을 수 있다면 담는 것이 좋은지, 아닌지 int weight[101]; // 무게 int value[101]; // 가치 int N,M; // 개수, 최대무게 int dp[102][100001]; // 값 저장 //재귀를 이용한 풀이 ..

백준, BOJ, 2217번 C++ [CPP]

정말 느낌대로 풀면 되는 풀이지만 검증을 해야한다 사실.. https://www.acmicpc.net/problem/1026 #맞은 풀이 #include #include #include using namespace std; int N; vector vec; vector target; int main(){ cin >> N; //A숫자 for(int i = 1; i> a; vec.push_back(a); } //B숫자 for(int i = 1; i > b; target.push_back(b); } sort(target.begin(), target.end()); // 오름차순 sort(vec.begin(), vec.end()); // 오름차순 reverse(vec.begin(),vec.end()); // 내림..

백준, BOJ, 2217번 C++ [CPP]

음.. 그냥 생각하고 푸는 문제다. 수학문제같다. 메모리가 192다. 128 + 64 를 의도한 건지는 모르겠다. https://www.acmicpc.net/problem/2217 #맞은 풀이 #include #include #include using namespace std; int N; int size; vector vec; int M = 0; int main(){ cin >> N; size = N; while(N--){ int a; cin >> a; vec.push_back(a); } sort(vec.begin(),vec.end()); // 오름차순 정렬 //큰 것부터 차례로 더함 for(int i = 1; i

백준, BOJ, 11659번 C++ [CPP]

이것도 DP의 예로 입력이 많고 테스트 케이스도 많아서 DP 풀어야 하는 방식과 비슷할 거라고 예상하고 들어갔다. https://www.acmicpc.net/problem/11659 #맞은 풀이 #include using namespace std; int N,M; int map[100001]; int dp[100001]; int main(){ ios :: sync_with_stdio(0); cin.tie(0); cin >> N >> M; for(int i = 1; i> a; map[i] = a; dp[i] = a+dp[i-1]; } while(M--){ int a,b; cin >> a >> b; cout

백준, BOJ, 15657번 C++ [CPP]

이 문제도 백트래킹으로 어렵지 않은 문제다. 다만 출력 조건에 맞게끔 선택하려면 선택 과정에서 필터가 있어야 한다. https://www.acmicpc.net/problem/15657 #맞은 풀이 #include #include //N개의 수를 담을 벡터 #include //오름차순 정렬 using namespace std; int N,M; vector vec; // N개의 수를 담을 벡터 vector ans; // 수열을 넣을 벡터 void func(int cnt){ if(cnt == M){ //M개 골랐다면 출력 for(int a : ans){ cout a; vec.push_back(a); } sort(vec.begin(), vec.end()); func(0); } 여기선 필터가 이미 선택한 숫자보다..

백준, BOJ, 1654번 C++ [CPP]

아주아주 착각에 빠지기 쉬운 문제다. 물론 시간이 많지만 입력이 드럽게 많기 때문에 생략하고 풀어보자 https://www.acmicpc.net/problem/1654 #틀린 풀이 일부 int main() { ios::sync_with_stdio(0); cin.tie(0); cin >> K >> N; for (int i = 0; i > a; arr[i] = a; } sort(arr, arr + K); // 오름차순 standard = arr[K-1]; // 최댓값 while (1) { for (int i = K-1; i > 0; i--) { sum += (arr[i] / standard); } if (sum >= N) { cout > N >> K; f..

백준, BOJ, 1920번 C++ [CPP]

이 문제 처음에 당연히 for문으로 쉽게 하려다가 입력 숫자보고 바로 접었다. https://www.acmicpc.net/problem/1920 #맞은 풀이 #include #include #include using namespace std; int N,M; //vector vec; int num[100001]; void binarySearch(int n, int arr[]){ int low = 0; int high = N-1; int mid; while(low > M; for(int i = 0; i> b; binarySearch(b, num); } } 이 문제는 탐색횟수를, 시간복잡도를 줄여야 했다. 그래서 탐색방법을 생각해봤다. 선형탐색은 시간이 많이 걸리고 어떠한 숫자를 찾는 것은 이진탐색이 O(l..

728x90
반응형