코딩테스트
[실4] 10866 - 덱
#include #include #include #include #include #include #include #include #include using namespace std; deque my_deque; vector my_vec; void Push_front(int _value) { my_deque.push_front(_value); } void Push_back(int _value) { my_deque.push_back(_value); } void Pop_front() { if (my_deque.empty()) { my_vec.push_back(-1); return; } my_vec.push_back(my_deque.front()); my_deque.pop_front(); } void Pop_b..
[실3] 2346 - 풍선 터뜨리기
#include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int n; cin >> n; deque dq; for (int i = 0; i > t; dq.push_back({t, i + 1}); } while (!dq.empty()) { int t = dq.front().first; cout
[실1] 1914 - 하노이 탑
#include #include #include using namespace std; void Move(int c, int s, int m, int e) { if (c == 1) { cout
[실5] 4659 - 비밀번호 발음하기
#include #include #include using namespace std; bool IsVocal(char c) { return c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u'; } int maxCnt = 3; int main() { vector res; string s = ""; while (true) { string tmp = ""; bool hasVocal = false, flag = false, fail = false;; cin >> s; if(s == "end") break; for (int i = 0; i < s.size() + 1; i++) { char cur = i < s.size() ? s[i] : ' '; // 1. 모음(..
코딩테스트 문제 풀이 전, 시/공간 복잡도 이해하기
복잡도 코딩테스트를 준비하기 전, 시간 복잡도와 공간복잡도 이해 해야한다. 대부분의 코딩테스트 문제에는 제한 시간과 메모리가 존재한다. 이를 바탕으로 적절한 시/공간 복잡도를 계산한 뒤 적절한 알고리즘을 사용할 필요성이 있다. 시간 복잡도 '제한시간'안에 알고리즘 문제를 해결하기 위해서는 시간복잡도를 이해해야 한다. 일반적으로 O(N)과 같은 빅오 표기법을 기준으로 연산 횟수를 계산한다. for 문으로 문제를 해결할 시 시간복잡도는 다음과 같다. 단일 for문: O(N) 이중 for문: O(N²) 삼중 for문: O(N³) N값이 어떻게 주어지냐에 따라 시간복잡도를 계산해보자면 N = 500 O(N³)일 경우 1.25 * 10⁸의 연산 횟수가 필요하다. O(N²)일 경우 2.5 * 10⁵의 연산 횟수가 ..
[실5] 1439 - 뒤집기
#include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); string s; cin >> s; int res = 0; for (size_t i = 0; i < s.length(); i++) { if (s[i] != s[i + 1]) res++; } cout 0 ? res / 2 : res); }
[실4] 1755 - 숫자놀이
#include #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); const string numbers[] { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", }; vector ans; int n, m; cin >> n >> m; for (size_t i = n; i = 10) s = numbers[i / 10] + " " + numbers[i % 10]; else s = numbers[i % 10]; ans.push_back({ s,i ..
[실5] 14916 - 거스름돈
#include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int n, res = 0; cin >> n; if (n < 5) res = (n % 2 == 0) ? n / 2 : -1; else { int q = n / 5; if (n % 5 == 0) res = q; else { int remain = n - q * 5; if (remain % 2 == 0) res = q + remain / 2; else res = (q - 1) + (remain + 5) / 2; } } cout
[실4] 28278 - 스택 2
#include #include #include using namespace std; stack s; string res; void Push(int n) { s.push(n); } void Pop() { if (s.empty()) res += to_string(-1) + '\n'; else { res += to_string(s.top()) + '\n'; s.pop(); } } void Size() { res += to_string(s.size()) + '\n'; } void Empty() { res += to_string(s.empty()) + '\n'; } void Top() { res += to_string(s.empty() ? -1 : s.top()) + '\n'; } int main() { ios..
[실5] 2563 - 색종이
#include #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int arr[100][100]{ 0 }; int n; cin >> n; for (size_t i = 0; i > n1 >> n2; for (size_t j = n1; j < n1 + 10; j++) { for (size_t k = n2; k < n2 + 10; k++) arr[j][k] = 1; } } int sum = 0; for (size_t i = 0; i < 100; i++) { for (size_t j = 0; j < 1..