본문 바로가기

전체 글

(112)
시간복잡도 1. O(1), 상수 시간복잡도 - 입출력 - 사칙연산 - 간단한 if 문 - 배열 인덱스 참조 2. 재귀 함수의 시간복잡도 - 당연히 함수 내에서 어떻게 재귀 호출하느냐에 따라 달라진다. - 예를 들어, 로직 내에서 한 번 재귀 호출하면 *2가 되겠지만 세 번 재귀호출하면 대강 *4가 될 것이다. 2-1. 예시 1 #include using namespace std; int a[1004]; int cnt = 0; int go(int l, int r) { ++cnt; if (l == r) return a[l]; int mid = (l + r) / 2; return go(l, mid) + go(mid + 1, r); } int main() { int retVal = go(1, 5); cout > N; so..
타입 1. int 타입 - int는 자바처럼 최댓값으로 약 20억을 가지기 때문에, 이를 넘어가면 "long long" 타입으로 받아야 한다. - const 키워드를 통해(자바에선 final) 상수를 선언할 수 있다. 2. pair와 tuple #include using namespace std; int main() { pair p; tuple t; p = make_pair(1, 2); t = make_tuple(1, 2, 3); int a, b, c, d, e; tie(a, b) = p; tie(c, d, e) = t; cout
입출력 1. cin의 치명적 단점 int T; string s; int main() { cin >> T; string bufferflush; getline(cin, bufferflush); for(int i = 0; i < T; i++){ getline(cin, s); } cout
배열 내 중복 요소 제거하기(unique) 1. map 자료구조 활용 #include using namespace std; vector v; vector u; map mp; // map 자료구조를 활용해서 v의 중복 요소를 제거 int main() { // ver1. // map 자료구조를 활용해서 v의 중복 요소를 제거 v = {1, 1, 2, 2, 3, 3}; for (int n : v) { if (mp[n]) { continue; } else { mp[n] = 1; } } for (auto n : mp) { u.push_back(n.first); } for (auto n : u) cout
문자열 자르기(split) 1. 반복문을 통한 문자열 자르기 #include using namespace std; vector split(string input, string delimiter) { vector retVal; long long pos = 0; while ((pos = input.find(delimiter)) != string::npos) { retVal.push_back(input.substr(0, pos)); input.erase(0, pos + delimiter.length()); } retVal.push_back(input); return retVal; } int main() { string input = "abcdabc"; string delim = "d"; vector v = split(input, del..
조합(combination) 1. 재귀 함수 활용 #include using namespace std; int r = 3; int n = 5; void printV(vector arr) { for (int i = 0; i < 3; ++i) { cout
순열(permutation) 1. std::next_permutation() #include using namespace std; vector v; int main() { for (int i = 1; i
C++ 기본 헤더 및 컴파일 1. 기본 헤더 #include using namespace std; - 알고리즘을 작성하기 위한 가장 기본적인 선언 형식이다. - "#include 는 c++ 코드 작성에 필요한 기본적인 라이브러리를 전부 담고 있는 통합 헤더를 추가해준다. - "using namespace std"는 'std::'로 시작하는 namespace를 반복해서 쓰지 않도록 전역으로 선언한다. 2. 컴파일 - 우선, 내가 컴파일 할 cpp 파일로 터미널의 커서를 이동한다. - IDE에서 파일을 클릭하고 거기서 터미널을 열 수도 있다. - 위 줄은 'permutation_1.cpp' 파일을 test.out 파일로 컴파일해주는 명령어다. - 아래 줄은 'test.out' 파일을 실행하는 명령어고, 내가 작성한 코드의 결과가 출력된..