일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- dataasset
- 선택정렬
- C++
- 구조적 바인딩
- 언리얼가비지컬렉터
- 정렬
- stl
- BFS
- C++최적화
- 데이터애셋
- unorder_map
- 델리게이트
- UE_LOG
- UML관련
- 애셋로드
- 람다
- 약참조
- 정렬알고리즘
- 프로그래머스
- UE4 커스텀로그
- moreeffectiveC++
- map
- 크리티컬섹션
- 강참조
- UELOG
- 알고리즘
- 람다사용정렬
- 스마트포인터
- 자료구조
- enumasByue
- Today
- Total
목록Note (426)
기억을 위한 기록들
www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net #include #include using namespace std; int main() { int n; cin >> n; cin.ignore(); string input; for (int i = 0; i > input; int size = input.size(); for (int j = 0..
www.acmicpc.net/problem/11727 11727번: 2×n 타일링 2 2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다. www.acmicpc.net #include using namespace std; int main() { int dp[1001] = { 0 }; dp[1] = 1; dp[2] = 3; dp[3] = 5; dp[4] = 11; int N; cin >> N; for (int i = 5; i
www.acmicpc.net/problem/9466 9466번: 텀 프로젝트 이번 가을학기에 '문제 해결' 강의를 신청한 학생들은 텀 프로젝트를 수행해야 한다. 프로젝트 팀원 수에는 제한이 없다. 심지어 모든 학생들이 동일한 팀의 팀원인 경우와 같이 한 팀만 있을 www.acmicpc.net #include using namespace std; int n = 0; int cnt = 0; int arr[100001]; int visited[100001]; int resultArr[100001]; void D(int curNum) { visited[curNum] = true; int targetNum = arr[curNum]; //현재노드가 가리키고 있는 번호 if (!visited[targetNum]) /..
www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net #include #include #include #include using namespace std; bool compare(string a, string b) { if (a.length() == b.length()) { return a > n; string input; vector arr;..
www.acmicpc.net/problem/1427 1427번: 소트인사이드 첫째 줄에 정렬하고자하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net #include #include #include #include using namespace std; int main() { string n; cin >> n; unique_ptr arr = make_unique(n.size()); for (int i = 0; i < n.size(); i++) { arr[i] = n[i]-'0'; } int curIndex = 0; for (int i = 0; i < n.size(); i++) { curIndex = i; for (int j = i + 1; j < ..

이전에 공유 포인터의 서로 공유하면서 해제되지 않는 순환 참조가 발생하면서, 그것을 해결해주게 도와주는것이 weakptr 약한 포인터이다. 약한 포인터에는 공유 포인터의 강한참조외에 약한 참조가 존재하는데, 약한참조란? - 원시 포인터 해제에 영향을 끼치지 않음. - 약한 참조 카운트는 약한 참조의 수를 저장하는데 사용. - 약한 참조로 참조되는 개체는 강한 참조 카운트가 0이 될때, 소멸됨. - 순환 참조 문제의 해결책 * 공유 포인터에서부터 약한 포인터를 만든다. #include #include "Person.h" int main() { std::shared_ptr owner = std::make_shared("LaLa"); //강한참조 std::weak_ptr weakOwner = owner; //..

shared_ptr 공유포인터로 이전에 유니크 포인터와 달리 원시포인터를 독차지 하지 않고 여럿이서 공유 할 수있다. 몇명(?)이서 공유하는지 확인하기 위해 참조카운팅 기반으로 작동이 된다. 참조 카운팅이란 이전에 작성한 글이 있다. 사용예를 보면, #include #include "myVector.h" int main() { std::shared_ptr vector01 = std::make_shared(10.f, 30.f); // ... } 위와같이 생성하면 1 강한 참조 (1 strong ref)가 표시되는걸 확인할 수 있다. shared_ptr 내부 - 두개의 포인터를 소유 1. 데이터(원시 포인터)를 가리키는 포인터 2. 제어 블록을 가리키는 포인터(참조카운팅용) - 유니크 포인터와 달리 shar..
가비지 컬렉터는? - 메모리 누수를 막으려는 시도를 해준다. - 주기적으로 컬렉션을 실행. - 충분한 여유 메모리가 없을 때 컬렉션이 실행됨 (스케쥴에 따라 또는 수동으로도 실행가능) - 매 주기마다,GC는 루트("root")를 확인함 1. 전역변수 2. 스택 3. 레지스터 - 힙에 있는 개체에 루트를 통해 접근할 수 있는지 판단 - 접근할 수 없다면, 가비지로 간주해서 해제 문제점? - 사용되지 않는 메모리를 즉시 정리하지 않음. - GC가 메모리를 해제해야 하는지 판단하는 동안 애플리케이션이 멈추거나 버벅일 수 있음. 참조 카운팅? - 가비지컬렉션처럼, 개체에 대한 참조가 없을 때 개체가 해제됨. - 언제든 참조 횟수를 활용해서 특정 개체가 몇 번이나 참조되고 있는지 판단 가능 - 어떤 개체 A를 다..
www.acmicpc.net/problem/2210 2210번: 숫자판 점프 111111, 111112, 111121, 111211, 111212, 112111, 112121, 121111, 121112, 121211, 121212, 211111, 211121, 212111, 212121 이 가능한 경우들이다. www.acmicpc.net #include using namespace std; int map[6][6]; int dir[4][2] = { {-1,0} ,{0,1} ,{1,0} ,{0,-1} }; int check[1000000]; int result; void dfs(int x, int y, int sum, int depth) { if (depth == 5) { if (check[sum] ==..
www.acmicpc.net/problem/18238 18238번: ZOAC 2 2019년 12월, 두 번째로 개최된 ZOAC의 오프닝을 맡은 성우는 누구보다 화려하게 ZOAC를 알리려 한다. 작년 ZOAC의 방식은 너무 식상하다고 생각한 성우는 문자열을 보여주는 새로운 규칙을 고안해 www.acmicpc.net #include #include #include using namespace std; int main() { string n; int curCnt = 0; int curCnt2 = 0; int result = 0; char curLocation = 'A'; cin >> n; for (int i = 0; i < n.size(); i++) { curCnt = abs(n[i] - curLocation..
www.acmicpc.net/problem/2810 2810번: 컵홀더 첫째 줄에 좌석의 수 N이 주어진다. (1 ≤ N ≤ 50) 둘째 줄에는 좌석의 정보가 주어진다. www.acmicpc.net #include #include #include using namespace std; int main() { int n; cin >> n; string input; cin >> input; int cnt = 1; //컵홀더 1개 깔고 시작 int i = 0; while(i < input.size()) { if (input[i] == 'S') //싱글 의자 { cnt++; i++; } else { cnt++; i += 2; } } cout
www.acmicpc.net/problem/2670 2670번: 연속부분최대곱 첫째 줄은 나열된 양의 실수들의 개수 N이 주어지고, 그 다음 줄부터 N개의 수가 한 줄에 하나씩 들어 있다. N은 10,000 이하의 자연수이다. 실수는 소수점 첫째자리까지 주어지며, 0.0보다 크거나 www.acmicpc.net #include #include using namespace std; int main() { int n; cin >> n; double arr[10001] = { 0.f }; double dp[10001] = { 0.f }; for (int i = 1; i > arr[i]; } dp[1] = arr[1]; double result = -1; for (int i = 2; i