알고리즘 트레이닝

코드 #include using namespace std; void InsertionSort(char* A, int n) { char cur; for (int i=0;i=0 && cur < A[j]) { A[j+1] = A[j]; // Move A[j] right j--; } A[j+1] = cur; } } int main (void) { char A[10] = {&#39;B&#39;, &#39;C&#39;, &#39;F&#39;, &#39;Z&#39;, &#39;E&#39;, &#39;A&#39;, &#39;S&#39;, &#39;J&#39;, &#39;U&#39;, &#39;Y&#39;}; InsertionSort(A, 10); for (int i=0;i
개요 기하학적 데이터 처리는 이진 검색 트리(binary search tree)의 응용분야 중 하나입니다. 예를 들어 평면에 사각형이 놓여있고 점이 여기저기 분포해 있을 때, 어떠한 점이 사각형 내부에 있는지 또는 얼마나 많은 점이 사각형 내부에 포함되는지 알고 싶을 수 있습니다. 또는 점이 아닌 사각형이 여러 개 있는 경우 어떤 사각형이 서로 겹치는지 알고 싶을 수 있습니다. 우리는 이진검색트리를 이들 문제를 해결하는 데 사용할 수 있습니다. 그 경우 일반적으로 사용하는 문자열과 숫자가 아닌 기하학적 객체(점의 위치 등)를 키로 사용합니다. 1차원 범위검색 (1d Range Search) 정렬된 심볼테이블(Ordered Symbol Table)을 조금 확장하면 1차원 범위 검색과 범위 개수를 셀 수 있..
풀이 문제에 기술되어 있는 내용을 정확히 코드로 구현합니다. #include #include using namespace std; int main() { // your code goes here int R; while (cin >> R) { if (R == -1) { break; } cout > guesses; int Stroke = 0; while(guesses.length()>0) { char ch = guesses[0]; if ( solution.find(ch) == -1 ) { Stroke += 1; } else { solution.erase(remove(solution.begin(), solution.end(), ch), solution.end()); } guesses.erase(remove(g..
문제(요약) 부분문자열의 갯수를 구하시오. (출처) 접근법 완전탐색구현 후, 시간초과 발생하여 Dynamic Programing (Memoization) 적용 풀이 #include #include using namespace std; string S; string sT = "SAMSUNG"; const int NUM = 1000000007; vector memo; int fnSolve(int IdxT, int IdxS) { if (sT.size() == IdxT) { return 1; } if (S.size() == IdxS) { return 0; } int Ret = memo[IdxT][IdxS]; if (Ret != -1) { return Ret; } if (sT[IdxT] == S[IdxS]) { ..
풀이 #include #include using namespace std; vector SubSet; vector Seq(6); int n; int fnSolve(int idx,/* 고려하는 SubSet Index */ int cnt /* 선택한 갯수 */) { if (idx > n) { return 0; } if (cnt == 6) { cout
풀이 #include #include using namespace std; // next_permutaion 을 사용하면 쉽게 풀이 가능 int main() { string str; while (cin >> str) { if (str[0] == &#39;#&#39;) { break; } bool val = next_permutation(str.begin(), str.end()); if (val == false) { cout
풀이 #include using namespace std; FILE* stream; int main(void) { //freopen_s(&stream, "Text.txt", "r", stdin); int D, F, H; float U; // Double 사용하면 답이 달라짐 while (cin >> H >> U >> D >> F) { if (H == 0) { break; } float f = U * F / 100; // Double 사용하면 답이 달라짐 float i = 0; // Double 사용하면 답이 달라짐 int d = 1; while (true) { // Day i += U; if (U > 0) U -= f; // Leave if (i > H) { break; } //cout
#include using namespace std; // FILE* stream; int main(void) { // freopen_s(&stream, "Text.txt", "r", stdin); int T; cin >> T; for (int t = 0; t > N; for (int i = 0; i > s; if (s > max) { max = s; } } cout
쓴웃음
'알고리즘 트레이닝' 카테고리의 글 목록 (4 Page)