전체 글

전체 글

    [실1] 1931 - 회의실 배정

    #include #include using namespace std; pairarr[100001]; int main() { int n,a,b,cnt=1; cin>>n; for (int i = 0; i > b >> a; arr[i] = {a, b}; } sort(arr, arr + n); int end=arr[0].first; for (int i = 1; i < n; i++) { if (end

    [실2] 1654 - 랜선 자르기

    #include #include #include using namespace std; #pragma region 입출력 속도향상 #define FAST_IO() \ {\ ios::sync_with_stdio(false);\ cin.tie(NULL); \ cout.tie(NULL); \ }\ #pragma endregion vector v; int main() { FAST_IO(); long k, n; cin >> k >> n; v.resize(k); for (int i = 0; i > v[i]; sort(v.begin(), v.end()); long l = 1, r = v[k - 1]; long res = 0; while (l = n) { res = mid; l = mid + ..

    [실2] 2805 - 나무 자르기

    #include #include #include using namespace std; #pragma region 입출력 속도향상 #define FAST_IO() \ {\ ios::sync_with_stdio(false);\ cin.tie(NULL); \ cout.tie(NULL); \ }\ #pragma endregion vector v; int main() { FAST_IO(); long n, m; cin >> n >> m; v.resize(n); for (int i = 0; i > v[i]; sort(v.begin(), v.end()); long l = 0, r = v[n - 1]; long res = 0; while (l mid) sum += v[i] - mid; } if..

    [골4] 2110 - 공유기 설치

    #include #include #include using namespace std; vector v; int main() { int n, c; cin >> n >> c; v.resize(n); for (int i = 0; i > v[i]; sort(v.begin(), v.end()); int l = 1, r = v[n - 1]; int res = 0; while (l

    [C++] 이분 탐색 (Binary Search)

    이분 탐색(Binary search)이란? - 정렬된 리스트(배열)에서 원하는 값(target)의 존재 여부(존재 위치)를 찾는 알고리즘. - 반드시 리스트(배열)를 정렬해서 사용해야 한다는 단점이 있다. - 탐색할 때마다 검사 범위가 절반으로 줄어든다. - 재귀적인 방법, 반복문, STL를 이용하여 이분 탐색(Binary Search)을 실행할 수 있다. - Time Complexity : O(log N) 변수 설명 1. int low & int high 검사 범위의 시작점, 끝점의 인덱스를 가리키기 위한 변수. left는 시작점을, right를 끝점의 인덱스를 가리킨다. // nums에 수들이 들어가있다고 가정 vector nums; int low = 0; // 초기 세팅: 제일 앞 인덱스 int h..

    C++ MST 크루스칼 + 프림 알고리즘 코드

    이미지 출처) Minimum Spanning Tree - Kruskal - Algorithms for Competitive Programming (cp-algorithms.com) 정답) 1 + 2 + 3 + 4 + 7 = 17 순회하는 순서가 추가되는 노드 순서에 따라 상이할 수 있음. 입력 데이터 From 1 To 2 Value 2 Edge형 구조체에 담음, int from, to, val; 9 1 2 2 1 4 1 1 5 4 2 4 3 2 3 3 2 6 7 3 6 8 4 3 5 5 4 9 0 0 0 크루스칼 알고리즘 핵심 포인트) 모든 부모 노드들을 포함하고 있을 int형 벡터와 Edge형 벡터, 한 방향만 연결. #include #include #include using namespace std;..

    2D AABB OBB 충돌

    충돌 * Bounding Box * 충돌을 검사하기 위해 단순한 박스 모양으로 충돌을 검사하는 것. - 메쉬의 폴리곤 하나하나 검사하기엔 연산이 너무 많아 단순한 박스 모양이나 구, 캡슐 형태를 주로 사용한다. AABB와 OBB의 차이 * AABB (Axis Aligned Bounding Box) : 정렬된 축의 박스끼리의 충돌이다. * OBB (Oriented Bounding Box) : 박스와 함께 축 같이 회전한다. AABB (Axis Aligned Bounding Box) * 2D AABB 충돌은 두 가지를 체크하여 두 가지 모두 true여야 충돌이다. 1. 가로 체크 : 두 사각형의 중점 가로 사이의 거리 < 두 사각형의 밑변 절반의 크기 합 2. 세로 체크 : 두 사각형의 중점 세로 사이의 거..

    [C#] 8.0 새로운 기능

    1. 디폴트 인터페이스 멤버(Default Inteface Members) 이전 버전에서는 인터페이스를 한번 배포한 후 수정하면, 기존에 구현된 모든 타입들을 수정하지 않는 한 타입 오류를 발생시켰다. 더구나 그 인터페이스를 외부에서 사용한다면, 수정은 거의 불가능하였다. C# 8.0에서는 인터페이스에 새로운 멤버를 추가하고 새로운 멤버의 Body 구현 부분을 추가할 수 있게 되었다. 이렇게 새로 추가된 인터페이스 멤버는 디폴트로 사용되기 때문에 기존 구현된 타입들이 새 멤버를 추가적으로 구현되지 않을 경우 이 디폴트 구현을 사용하게 된다. 새로 구현하는 클래스는 디폴트 멤버 구현을 사용하지 않고 재정의할 수 있다. 인터페이스의 디폴트 멤버 구현을 액세스 하기 위해서는 인터페이스로 캐스팅된 변수를 사용해..

    [C#] 9.0 새로운 기능

    C# 9.0 추가된 기능들 최상위 프로그램(Top-Level Programs) init accessor record Type 향상된 패턴 매칭(Pattern matching) 최상위 프로그램 (Top-Level Programs) 1. 정의 C# 프로그램은 Main() 정적 메서드에서부터 프로그램 시작하며, C# 프로젝트 생성하면 항상 이 Main() 메서드를 자동으로 생성한다. 프로그래밍에서 이를 보통 엔트리 포인트(Entry point) 라 부른다. 프로그래밍을 처음 시작하면 Main() 엔트리 포인트 부분의 이해가 어렵기 때문에 C# 9.0에서 이러한 제약을 없애고 바로 C# 문장을 사용할 수 있는 기능을 제공한다. 이를 최상위 프로그램(Top-Level Program) 이라 부른다. 2. 사용 예제..

    [C++] 문자열 (string) 함수 모음

    length() 메소드와 size() 메소드 length() 메소드는 문자열의 길이를 반환하는 메소드다. size() 메소드도 length() 메소드와 언제나 같은 값을 반환하지만, 그 의미는 약간 다르다. length() 메소드는 문자열의 길이를 나타내지만, size() 메소드는 해당 string 객체가 메모리에서 실제 사용하고 있는 크기를 나타낸다. string str1; string str2 = "C++ Programming"; cout