본문 바로가기

CodingTest Exam

(110)
46. 멀티태스킹(카카오 먹방 문제 변형) (it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비) ★★☆☆☆ #include #include using namespace std; int main() { int n, k, tot = 0, cnt = 0, pos = 0; bool flag = false; scanf("%d", &n); vector task(n+1, 0); for(int i = 1; i = tot) { printf("%d", -1); return 0; } while(true) { pos++; if(pos > n) pos = 1; if(task[pos] == 0) continue; task[pos]--; cnt++; if(cnt == k) break;..
45. 공주 구하기 (it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비) ★★☆☆☆ #include #include using namespace std; int main() { int n, k, remain, count = 0; scanf("%d %d", &n, &k); vector prince(n+1, 0); for(int i = 1; i 1) { for(int i = 1; i < prince.size(); i++) { if(prince[i] == 0) continue; count++; if(count == k) { prince[i] = 0; count = 0; remain--; } if(i == prince.size()-1) i = 0; if(remain == 1) br..
44. 마구간 정하기(이분검색 응용) (it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비) ★★☆☆☆ #include #include #include using namespace std; int main() { int n, c, a, lt, rt, mid, idx, answer = 0, count = 1; scanf("%d %d", &n, &c); vector A(n+1, 0); for(int i = 1; i < A.size(); i++) { scanf("%d", &a); A[i] = a; } sort(A.begin(), A.end()); lt = 1; rt = A[n]; while(lt = mid) { count++; idx = i; i = idx; } } if(count < c) { rt = mid - 1; count = 1; } else { lt = mid + 1; if(answer == 0 || ..
43. 뮤직비디오(이분검색 응용) (it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비) ★★★★☆ #include #include using namespace std; int main() { int n, m, lt = 1, rt = 0, mid, answer = 0, sum = 0; scanf("%d %d", &n, &m); vector dvd(n+1, 0); for(int i = 1; i < dvd.size(); i++) { scanf("%d", &dvd[i]); rt += dvd[i]; } vector record; while(lt
42. 이분검색 (it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비) ★☆☆☆☆ #include #include #include using namespace std; int main() { int n, m, low, high; scanf("%d %d", &n, &m); vector num(n+1,0); for(int i = 1; i m) high = mid -1; else if(num[mid] < m) low = mid + 1; } printf("%d", mid); r..
41. 연속된 자연수의 합 (it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비) ★★★★☆ #include #include using namespace std; int main() { int n, p1, p2, cnt = 0; scanf("%d", &n); vector num(n, 0); for(int i = 1; i 0 && p2 > 0) { int sum = 0; for(int i = p2; i >= p1; i--) sum += num[i]; if(sum > n) { p1--; p2--; } else if(sum == n) { for(int i = p1; i 0) { a++; n -= a; if(n % a == 0) { for(int i = 1; i < a; i++) { printf("%d + ..
40. 교집합(투포인터 알고리즘) (it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비) ★★☆☆☆ #include #include #include using namespace std; int main() { int n, m; scanf("%d", &n); vector N(n, 0); for(int i = 0; i < n; i++) scanf("%d", &N[i]); scanf("%d", &m); vector M(m, 0); for(int i = 0; i < m; i++) scanf("%d", &M[i]); vector count(21470000, 0); vector answer; for(int i = 0; i < n; i++) count[N[i]]++; for(int i = 0; i < m; i++) { if(count[M[i]] != 0) answer.push_back(M[i]); } sort(an..
39. 두 배열 합치기(병합정렬) (it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비) ★☆☆☆☆ #include #include using namespace std; int main() { int n,m,nc,mc; nc = 0; mc = 0; scanf("%d", &n); vector nv(n, 0); for(int i = 0; i m) { if(mc >= mv.size()) { if(nc >= nv.size()) break; answer[i] = nv[nc]; nc++; cont..