C++

    [골5] 24891 - 단어 마방진

    #include #include #include #include #define FAST_IO() \ {\ ios::sync_with_stdio(false);\ cin.tie(NULL); \ cout.tie(NULL); \ }\ using namespace std; vector ans(20), s(20); vector vis(20); int l, n; void DFS(int cnt = 0) { if (cnt == l) { bool flag = true; for (int i = 0; i < l; i++) { for (int j = i + 1; j < l; j++) { if (flag) flag = (ans[i][j] == ans[j][i]); } } if (flag) { for (int i = 0; i < ..

    [C++] 함수를 객체로 사용하기 (std::function, std::mem_fn, std::bind)

    Callable Callable 이란, 이름 그대로 호출(Call)할 수 있는 모든 것을 의미한다. 대표적인 예시로 함수가 있다. 하지만 C++에서는 ( ) 를 붙여 호출할 수 있는 모든 것은 Callable 이라고 정의한다. same_obj 는 클래스의 객체이지만, 함수처럼 ( ) 를 호출할 수 있다. 마찬가지로, a 는 람다 함수이지만, ( ) 를 통해 호출할 수 있기에 Callable 이라고 할 수 있다. #include struct S { void operator()(int a, int b) { std::cout

    [C++] 매크로 개념과 주의사항

    매크로 -> 단순 치환 -> #define으로 정의한다. # : 전처리 지시자 -> 컴파일 이전에 수행 define : 정의하다. -> 컴파일 이전에 정의하라고 명령. #1 매크로 상수 #define 매크로이름 치환할 값 매크로 상수 사용 시 주의사항 -> 단순 치환이기 때문에 세미콜론을 작성할 경우 세미콜론까지 치환해버린다. 예) #define PI 3.14f; // 입력 cout 속도가 빠르다. -> 함수 호출을 위한 연산들이 필요 없어진다. 매크로 함수의 주의점 #1 연산을 수행할 때 연산자 우선순위를 명확하게 표시해야한다. 예) #define SQUARE(n) n * n cout

    [C++] emplace_back 과 push_back 의 차이

    item 타입의 생성자가 타입을 인자로 받는다면? push_back 함수는 '객체' 를 집어 넣는 형식으로, 객체가 없이 삽입을 하려면 "임시객체 (rvalue) " 가 있어야 하거나 암시적 형변환이 가능하다면, 인자로도 삽입할 수 있다. ( 이는 인자를 통해 임시객체를 암시적으로 생성한 후 삽입한다 ) vector vt; item a = {}; // 기본 생성자 호출 vt.push_back(item("abc", 1, 234)); vt.push_back(std::move(a)); vector v; v.push_back(1); // 등등.. 1. push_back을 통해 객체를 삽입하기 위해, item 임시 객체를 하나 만든다. 2. 임시 객체를 복사 생성자를 통해 push_back 함수 내에서 임시 객체..

    [C++] 배열 초기화, 벡터 초기화, fill 함수

    C++에서 배열을 선언하고 초기화를 해주지 않으면 배열은 쓰레기 값으로 채워져있다. 아래의 코드를 실행해보면 #include using namespace std; int main() { int arr[5]; for (int i = 0; i < 5; i++) { cout

    [C++] 쓰레기값 거르기(아주 작은값) numeric_limits

    numeric_limits 클래스 template class numeric_limits epsilon 함수는 1과 데이터 형식에 대해 나타낼 수 있는 1보다 큰 가장 작은 값 사이의 차이를 반환 // numeric_limits_epsilon.cpp // compile with: /EHsc #include #include using namespace std; int main( ) { 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. 모음(..

    [C++] EOF(End Of File) 처리 방법

    1. scanf()가 입력받은 인자의 갯수를 리턴하는 특성을 활용하는 방법 #include int main() { int a, b; while (scanf("%d%d", &a, &b) == 2) // scanf는 입력받은 갯수를 리턴한다 // 만약에 scanf("%d",&a); 에서 입력이 제대로 들어왔다면 1이 리턴된다. // 그렇기 때문에 a,b를 입력받는 scanf가 2와 같다면이란 말은 입력이 있다면과 같은 말이다 printf("%d\n", a + b); }​ 2. scanf()를 EOF와 직접 비교하는 방법 #include int main(){ int a,b; while(scanf("%d %d",&a,&b) != EOF) // EOF == End Of File // 말그대로 파일의 끝에 도달하면..

    [C++] min max 함수 (algorithm 라이브러리)

    0. std::min & std::max 1. ①비교할 값들이 많거나, ②ArrayㆍVector와 같은 일련의 컨테이너에 저장되어 있다면, 최소값ㆍ최대값을 구하기 위해 min_element 또는 max_element 함수를 사용할 수 있다. (해당 함수에 대해서는 나중에 포스팅 하겠다.) 2. std::min와 std::max는 algorithm 라이브러리에 3가지 형태로 존재한다. 『① Default Constructor 』 『② Custom Constructor 』 『③ Initializer List Constructor 』 가 이에 해당한다. 1. std::min & std::max 『① Default Constructor 』 함수 원형 /* -- Default Constructor -- */ #i..

    [C++] 공백 포함 문자열 입력받기

    1. getline 이용 getline을 쓰면 알아서 공백 포함하여 문자열을 입력받는다. int main() { string s; getline(cin, s); cout