[C++] 코딩테스트 알고리즘 c++ 문법 정리
·
🍞 Problem Solving/C & C++
#include using namespace std;ios_base::sync_with_stdio(false);cin.tie(NULL); cout.tie(NULL); sort 사용자 정의 정렬// 1차원 벡터bool cmp(int a, int b) return a &v1, vector &v2){ if(v1[1] == v2[1]) return v1[0] u, pair t){ if(u.first==t.first) return u.second  정렬 후, 중복제거sort(v.begin(), v.end());v.erase(unique(v.begin(). v.end()), v.end()); 정렬된 경우 이분탐색 (크거나 같은 값, 더 큰 값)lower_bound는 정렬된 배열에서 탐색값이 2개 이상 있..
[C++] 백트래킹, 순열, 조합, 부분집합, 중복순열, next_permutation
·
🍞 Problem Solving/C & C++
백트래킹현재 상태에서 가능한 모든 후보군을 따라 들어가며 탐색하는 알고리즘 - 제약 조건을 만족하는 문제를 해결하기 위해 쓰는 알고리즘 - 특정 조건을 만족하는 조합 알고리즘에 해당하는 모든 해를 찾는 문제 - 모든 경우의 수 중 조건에 위배되는 경우는 빼고 답을 찾는 것 - 답이 될 수 있는 모든 경우의 수를 DFS를 이용해 찾음 - 만약 답이 될 수 없는 경우면 더 이상 탐색하지 않고 이전으로 돌아감 ‼️ 주의재귀로 푸니까 스택 메모리 제한을 확인해야된다.N이 클 경우 백트래킹을 적용하면 시간초과 난다. 백트래킹 알고리즘의 시간 복잡도는 주로 문제의 조건에 따라 달라진다. 선택할 수 있는 숫자가 N개이고, 수열의 길이가 M이므로 총 경우의 수는 O(N^M)다. 따라서 최악의 경우에는 지수 시간이 소요..
[C++] 문자열 자르기 사용법 substr()
·
🍞 Problem Solving/C & C++
📌 substr() 문자열에서 원하는 위치에 있는 문자열을 얻기 위해 substr 함수를 사용한다. substr 함수 기본적인 사용 방법은 아래와 같다. 문자열.substr(시작 위치, 길이) - 첫 번째 인수에는 시작 위치를, 두 번째 인수에는 취득하고 싶은 문자수를 지정한다. - 문자열 시작은 0부터다. #include using namespace std; int main() { string str = "abcde"; cout
[C++] 입력 개수 모를 때 무한 반복문 제어 cin.eof()
·
🍞 Problem Solving/C & C++
무한 반복문을 제어하는 문제를 풀다가 막혀서 정리하고자 한다. 데이터 소스에서 더 이상 읽을 데이터가 없어 EOF(End Of File)를 리턴하면 종료해야 하므로 EOF가 true면 반복문을 탈출하도록 만든다. EOF: 입력의 끝 "입력의 끝"(eof)에 다다랐다면, 반복문에서 탈출한다라는 뜻을 가진 구문이다. if (cin.eof() == 1) { break; } ex) https://www.acmicpc.net/problem/14909 14909번: 양수 개수 세기 첫째 줄에 최대 1,000,000개의 정수가 주어진다. 입력으로 주어지는 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같다. www.acmicpc.net #include using namespace std; ..