일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- DP
- object detection
- 분할 정복
- 회고록
- BFS
- 가끔은 말로
- Overfitting
- 너비 우선 탐색
- 크루스칼
- 알고리즘
- 플로이드 와샬
- tensorflow
- 2023
- 다익스트라
- 세그먼트 트리
- 우선 순위 큐
- c++
- dfs
- 백트래킹
- 미래는_현재와_과거로
- 자바스크립트
- 문자열
- lazy propagation
- pytorch
- 조합론
- 이분 탐색
- back propagation
- NEXT
- dropout
- 가끔은_말로
- Today
- Total
목록C++ (16)
Doby's Lab
insert() -> 원소를 추가합니다. map은 pair형이기 때문에 key, value를 pair형태로 타입에 맞게끔 넣어줍니다. -> key 값이 중복되면 런타임 오류가 일어납니다. erase() -> 해당 key값 원소를 지웁니다. 범위를 설정(iterator)해서 특정 범위만 지울 수 있습니다. clear() -> map의 모든 원소를 지웁니다. Map Operator: [] []을 통해 map을 배열처럼 사용할 수 있습니다.
말 그대로 사이즈를 다시 선언하는 메서드입니다. 간단한 메서드이지만 이런 경우에는 어떻게 되는지 궁금하여 글을 적게 되었습니다. size가 10인 배열에 1~10까지 담겨있다고 할 때, resize를 이용하여 크기를 5로 지정하면 배열에는 어떤 값들이 담겨있는지 궁금해졌습니다. #include #include using namespace std; int main(){ vector v(10); for(int i = 0; i < 10; i++) v[i] = i + 1; for(int i = 0; i < v.size(); i++){ cout
직전 포스팅 백준 1005번을 풀면서 겪었던 오류가 있었다. 전위 연산자와 후위 연산자와 관련된 문제였다. 매일 for문을 돌리면서 후위 연산자만 썼었는데 이 기회에 정리해두자. 우선 예제 코드를 만들어보자. n1과 n2 둘 다 1로 선언 후, n1은 Prefix Operator, n2는 Postfix Operator로 연산한다. #include using namespace std; int main() { int n1 = 1; cout 즉, 중괄호 맨 처음에 오는 부분을 기준으로 우선순위를 결정한다는 생각이다. 후위 연산자 주관적 정리 (증감)(1) -> (비교)(2) -> {(할당)(1), (덧셈, 뺄셈)(2)}(3) 그럼 마찬가지로 전위 연산자는 연산을 수행한 후, 값을 할당한다고 했다. 이 점을 바..
앞선 포스트에서 Merge Sort에 대해 공부했었다. Merge Sort를 바탕으로 만들어진 자료구조 Merge Sort Tree가 있다. 이는 세그먼트 트리처럼 각 노드에 각 구간을 정렬시킨 배열을 저장한다. 즉 머지 소트 하는 과정을 세그먼트 트리에 저장한다고 생각하면 된다. 이를 구현하는 과정에 간편하게 사용할 수 있는 함수들이 있다. merge(v1.begin(), v1.end(), v2.begin(), v2.end(), mergeArr.begin()) 다음과 같이 사용할 수 있으며 v1의 시작부터 끝, v2의 시작부터 끝을 합병 정렬하여 mergeArr에 저장시키겠다는 뜻이다. 헤더 파일에 있다. 하지만, 이 함수를 이용하기 위해서는 mergeArr에 v1, v2를 합병 정렬하여 넣을 수 있는..
https://draw-code-boy.tistory.com/101 [알고리즘] 백준 2407번: 조합 (C++), Combination, Permutation https://www.acmicpc.net/problem/2407 2407번: 조합 n과 m이 주어진다. (5 ≤ n ≤ 100, 5 ≤ m ≤ 100, m ≤ n) www.acmicpc.net 이번 문제는 (https://jaimemin.tistory.com/682)을 참고한다. 개념 학생.. draw-code-boy.tistory.com 이 문제를 풀면서 솔루션을 참고하다가 공부하게 된 내용이다. 우선 &를 쓴다는 점에서 포인터라고 생각했지만 전혀 다른 개념을 사용된다. 변수의 의미는 '메모리 공간에 이름을 붙인 것'이다. 참조자는 똑같은 메..
어떠한 배열이 있을 때 이전까지는 for문을 사용했다. check라는 배열의 모든 원소들을 -1로 초기화시키고 싶다고 하면 (check 배열의 크기는 1000) for (int i = 0; i < 1000; i++) { check[i] = -1; } 크게 귀찮음은 못 느꼈지만 한 번 memset 함수를 쓰고 나니 약간의 손 노동이었구나를 느낀다. 위 코드를 memset 함수를 사용하면 memset(check, -1, sizeof(check)); 즉, memset(초기화시키려는 배열, value, 그 배열의 사이즈);와 같은 형태로 사용하면 된다. 에 선언되어있음. [중요!] 메모리 관련 문제 때문에 -1 or 0이 아니면 memset을 쓰면 안 된다. for를 돌리거나 fill이라는 함수를 써야 함. 자..
문제를 풀다 보면 어떤 한 변수를 자료형이 가질 수 있는 최댓값 혹은 최솟값으로 선언할 일이 생긴다. 일일이 선언하는 경우는 까다로워 그와 관련된 헤더 파일이 있다는 것을 알게 되었다. https://docs.microsoft.com/ko-kr/cpp/c-language/cpp-integer-limits?view=msvc-160 C 및 C++ 정수 제한 자세한 정보: C 및 C++ 정수 제한 docs.microsoft.com
백준 15094번 문자열 관련 문제를 풀다가 VS 컴파일러에서는 오류가 없지만 백준에서는 Segfault Error가 나서 문제점을 찾았었다. 전에도 이런 비슷한 문제를 풀다가 똑같은 오류가 났었는데 두 문제의 공통점이 있었다. 문자열 문제 스택을 이용하여 풀려했다 문자열은 문제가 없는 거 같아서 스택을 살펴보았다. 아래 코드는 VS 컴파일러에서는 문제가 없지만 백준에서 에러가 발생한다. #include #include #include using namespace std; int main() { char idx[1001]; cin.getline(idx, 1001, '\n'); stack s; for (int i = 0; i < 1001; i++) { if (idx[i] == 'U') { if (s.emp..