본문 바로가기

분류 전체보기60

백준 2579 C++(+헛소리) 처음에 고민이 많았다. 그래서 풀이법을 찾아보고 생각했다.해답은 반대로 생각하기이다. 만약 저기 위치에서 최대 값을 가질려면 어떻게 해야하는가? arr[i] = step[i] + arr[i-2] or step[i] + step[i-1] + arr[i-3]//step[]은 각 계단의 값이다. arr[]은 각 부분의 최대 값이다.전에 있던 값이 어떤 값이든간에 성립하기 위해선 두가지 경우 외에는 존재하지 않는다. 개인적으로 이 문제는 처음에 시작부분 부터 생각해서 경우의 수를 계산하니까 너무 머리가 아팠다.그래서 반대로 마지막 부분을 위주로 생각했다. 이 문제는 DP문제이기 때문에 작은 문제로 나눌려면 어떻게 해야하는지 생각했다.  백준을 매일 풀기로 마음 먹었지만 그렇지 못하는 날도 많다. 알바를 매일 풀.. 2024. 7. 18.
백준 11650 C++ 이 문제는 벡터 자료형의 사용법과 sort의 사용법을 알면 쉽게 풀 수 있다.#include #include #include using namespace std;bool cmp(pair p1, pair p2) { if (p1.first == p2.first) return p1.second > n; vector> v; for (int i = 0; i > x >> y; v.push_back(make_pair(x, y)); } sort(v.begin(), v.end(), cmp); for (int i = 0; i 2024. 7. 17.
C++ STL Sort()함수 사용법. sort 함수는 C++ STL에서 제공하는 함수로써 정렬에 이용되면 헤더를 include하여 사용한다.시간복잡도는 nlogn이다. 사용법은 두 가지가 있다.vectorv(10,4); //4로 초기화 된 벡터 10개 생성.sort(v.begin(),v.end());sort(v.begin(),v.end(),compare_func); 첫 번째 경우첫 번째 인자: iterator(or 포인터)에서 정렬을 시작 할 부분두 번째 인자: iterator(or 포인터)에서 정렬을 마칠 부분 이 때 중요한 점은 [begin,end) 범위로 정렬을 한다는 것이다. (begin 즉, 예를 들어 int a[100]에서 0~10번 인덱스까지 정렬한다고 했을 때, 첫 번째 인자에는 배열의 시작 주소인 a을 넣고, 두 번째 인자에.. 2024. 7. 17.
C++ Vector 자료형이란? 벡터가 뭔데? 벡터는 배열과 비슷하지만 배열과 달리 크기를 미리 지정하지 않고 동적으로 조절할 수 있다.즉, 프로그램 실행 중에 필요에 따라 배열의 크기를 늘리거나 줄일 수 있다. 벡터 사용자가 데이터를 추가하거나 제거할 때 자동으로 크기를 조절한다.크기를 동적으로 조절함으로써 메모리를 효율적으로 활용할 수 있다.원래 배열은 컴파일 시에 크기를 고정해야 하지만 벡터는 선언 시 크기를 지정하지 않아도 된다.따라서 크기를 조절할 수 있어 더 유연한 데이터 구조를 제공한다. 벡터의 각 요소에 접근하여 원소를 추가하거나 삭제할 수 있다. 이로 인해 벡터의 크기가 동적으로 변한다. 또한 다양한 멤버 함수들을 제공한다. 예를 들어 push back 함수를 통해 원소를 벡터의 끝에 추가할 수 있고, pop_back .. 2024. 7. 16.
2751 C++ 원래 지금껏 c를 통해서 알고리즘 문제를 풀었는데 이제 c++로 넘어가야 할 것 같다.왜냐하면 이러한 정렬 알고리즘은 이미 라이브러리 상으로 최대효율을 내도록 구성이 되어 있기에,이를 이용하는 능력을 키우는게 중요하다 생각하기 떄문이다. 물론, 라이브러리를 가져다가 쓰기 전에 정렬 알고리즘은 이해하고 쓰는 것이 중요하다 생각한다. #include#includeusing namespace std;int arr[1000001];int main() { int a; cin >> a; for (int i = 0; i > arr[i]; } sort(arr, arr + a); for (int i = 0; i  algoritm 라이브러리의 sort함수를 사용했다.이는 arr배열에 a번째 까지 정렬한다는 의미이다. .. 2024. 7. 15.
함수 내부에 크기가 큰 배열을 선언하면 메모리 초과 알고리즘 문제를 풀다가 main함수 안에 크기가 큰 배열을 선언하니 계속 오류가 생겼다. 지역 변수로 배열을 선언하면 힙 영역에 할당되고, 전역 변수는 스택에 할당된다고 한다.그런데 힙 영역에 할당되는 Default 크기가 매우 작기 때문에 이러한 에러가 발생하는 것이다. 그래서 전역변수로 선언하면 문제가 해결된다. 2024. 7. 15.