프로그래밍/코테

coding test cheat sheet

jinkwon.kim 2022. 8. 17. 23:28
728x90
반응형

sort

1. 표준 

    c++ 11 에서 나옴 

2. 시간 복잡도

    O(N·log(N))

3. 예제 코드

    비교 연산자가 > 이면  큰 값부터 정렬

    비교 연산자가 < 이면 작 은 값 부터 정렬

#include <algorithm>
#include <functional>
#include <array>
#include <iostream>
#include <string_view>
 
int main()
{
    std::array<int, 10> s = {5, 7, 4, 2, 8, 6, 1, 9, 0, 3};
 
    auto print = [&s](std::string_view const rem) {
        for (auto a : s) {
            std::cout << a << ' ';
        }
        std::cout << ": " << rem << '\n';
    };
 
    std::sort(s.begin(), s.end());
    print("sorted with the default operator<");
 
    std::sort(s.begin(), s.end(), std::greater<int>());
    print("sorted with the standard library compare function object");
 
    struct {
        bool operator()(int a, int b) const { return a < b; }
    } customLess;
    std::sort(s.begin(), s.end(), customLess);
    print("sorted with a custom function object");
 
    std::sort(s.begin(), s.end(), [](int a, int b) {
        return a > b;
    });
    print("sorted with a lambda expression");
}

4. 결과

0 1 2 3 4 5 6 7 8 9 : sorted with the default operator<
9 8 7 6 5 4 3 2 1 0 : sorted with the standard library compare function object
0 1 2 3 4 5 6 7 8 9 : sorted with a custom function object
9 8 7 6 5 4 3 2 1 0 : sorted with a lambda expression

int to string

    int num1 = 10;
    float num2 = 22.1f;
 
    //to_string(int) -> int.
    string str1 = to_string(num1);

char to string

#include <iostream>
#include <string>
 
int main()
{
    char c = 'A';
 
    // using string class fill constructor
 
    std::string s(1, c);
    std::cout << s << std::endl;
 
    return 0;
}

string to char

std::string str = "hello";
std::vector<char> data(str.begin(), str.end());

MAX , MIN

maxium = std::max(k[0], k[1]));
minium = std::min(k[0], k[1]));

key , value sorting

std::vector<std::pair<int,int>> v_ans;
std::sort(v_ans.begin(), v_ans.end(), [](std::pair<int, int> a, std::pair<int,int> b) {
        return a.second < b.second;
    });

최대값 및 index 구하기 

- max_element의 결과로 최대값을 가리키는 반복자를 반환한다. 따라서 이를 * 연산자를 사용하면 최대값을 구할 수 있다.

- 또한, vector는 일련의 반복자로 구성되어 있으므로 최대값을 가리키는 반복자를 맨 처음을 가리키는 v.begin()만큼 빼준다면 인덱스 값을 구할 수 있다.

    int max = *max_element(v.begin(), v.end());
    cout << "가장 큰 수 : " << max << "\n";
    
    int max_index = max_element(v.begin(), v.end()) - v.begin();
    cout << "가장 큰 수의 인덱스 : " << max_index;
    cout << "\n==============================\n";

 

728x90
반응형