본문 바로가기

전체 글99

[Unity] 유니티 메모리와 가비지 컬렉션 (Unity Memory, Unity GC) 아래 내용은 Unity Roadshow 2026 강연에서 다루었던 내용의 정리본이며 연사인 이제민 님께서 Unity Forum Discussion에도 잘 정리해두신 내용이다.유니티 메모리와 가비지 컬렉션연사 이제민 주제OS 메모리 구조, 유니티의 메모리 구조, Core CLR GC에서 달라지는 점들이번 세션에서 다루려는 것→ 왜 GC가 실행된 다음에도 관리되는 힙/가상 메모리 사용량이 줄어들지 않는가?→ GC. collect()를 여러번 실행하는 것이 상주 메모리를 줄인다는 것이 사실인가? (스포일러: 사실 아님)→ CoreCLR에서 GC 동작의 변화OS 메모리 구조물리 vs. 가상 메모리어플리케이션의 모든 할당은 가상 메모리(Virtual Memory, VM)에서 발생어플리케이션은 가상 메모리(VM)에.. 2026. 8. 31.
[SWEA] 1961. 숫자 배열 회전 (C++) 문제https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5Pq-OKAVYDFAUq 풀이N이 3 이상 6 이하로 정해져있으므로 이차원 배열로 풀어도 되는데 일단 vector로 풀었다. 초기 행렬을 vector>에 입력 받는다.배열을 90도/180도/270도 돌린 결과를 for문 안에서 계산해 vector result90, result180, result270에 담아준다.90도 회전의 경우, 행렬 vector를 한 줄 읽어올 때 앞 index는 2->1->0 순서로 움직이고, 뒷 index는 0, 1, 2 중으로 고정됨. 따라서 j, i 순으로 읽어오는 것.180도 회전의 경우, 행렬 vector를 한 줄 읽어올 때 .. 2026. 7. 3.
[프로그래머스] 특정 문자열로 끝나는 가장 긴 부분 문자열 찾기 문제 문자열 myString과 pat가 주어집니다. myString의 부분 문자열중 pat로 끝나는 가장 긴 부분 문자열을 찾아서 return 하는 solution 함수를 완성해 주세요.제한사항5 ≤ myString ≤ 201 ≤ pat ≤ 5pat은 반드시 myString의 부분 문자열로 주어집니다.myString과 pat에 등장하는 알파벳은 대문자와 소문자를 구분합니다.입출력 예myStringpatresult"AbCdEFG""dE""AbCdE""AAAAaaaa""a""AAAAaaaa"입출력 예 설명입출력 예 #1"AbCdEFG"에서 "dE"는 한 번 등장하며 처음부터 해당 위치까지 잘라내면 "AbCdE"가 됩니다. 따라서 이 문자열이 "dE"로 끝나는 가장 긴 문자열이며, "AbCdE"를 return.. 2026. 6. 1.
6주차 12 동적 계획법12-1 동적 계획법 알아보기동적 계획법 dynamic programming복잡한 문제를 여러 개의 간단한 문제로 분리하여 부분 문제들을 해결함으로써 최종적으로 복잡한 문제의 답을 구하는 방법핵심 이론큰 문제를 작은 문제로 나눌 수 있어야 한다.작은 문제들이 반복돼 나타나고 사용되며 이 작은 문제들의 결괏값은 항상 같아야 한다.memoization : 모든 작은 문제들은 한 번만 계산해 DP 테이블에 저장하며 추후 재사용할 때는 이 DP 테이블을 이용한다.동적 계획법은 top-down 방식과 bottom-up 방식으로 구현할 수 있다DP의 대표적 예시 - 피보나치 수열D[N] = D[N-1] + D[N-2]동적 계획법으로 풀 수 있는지 확인하기피보나치 수열의 6번째 수는 피보나치 수열의 .. 2026. 4. 5.
5주차 10-3 이진 트리이진 트리: 각 노드의 자식 노드(챠ㅏ수)의 개수가 2 이하로 구성된 트리핵심 이론이진 트리의 종류편향 이진 트리: 노드들이 한쪽으로 편향돼 생성된 이진 트리포화 이진 트리: 트리의 높이가 모두 일정하며 리프 노드가 꽉 찬 이진 트리완전 이진 트리: 마지막 레벨을 제외하고 완전하게 노드들이 채워져 있고, 마지막 레벨은 왼쪽부터 채워진 트리편향 이진 트리의 형태로 데이터를 저장하면 탐색 속도가 저하되고 공간이 낭비됨완전 이진 트리를 사용하여 데이터 저장이진 트리의 순차 표현1차원 배열의 형태로 표현이동 목표 노드 index 연산 제약 조건 (N = 노드 개수)루트 노드index = 1 부모 노드index = index / 2현재 노드가 루트 노드가 아닐 것왼쪽 자식 노드index = in.. 2026. 3. 29.
4주차 9-3 위상 정렬위상 정렬 : 사이클이 없는 방향 그래프에서 노드 순서 찾는 알고리즘시간 복잡도 O(V+E) (V 노드 수, E 에지 수)주의항상 유일한 값으로 정렬되지 않음 (정렬이 되긴 하는데 진입 차수가 같은 노드가 있으면 정렬 순서가 할 때마다 다르게 나올 수 있음)사이클이 존재하면 노드 간의 순서를 명확하게 정의할 수 없으므로 위상 정렬 사용할 수 없음핵심 이론진입 차수 : 자기 자신을 가리키는 에지의 개수이차원 벡터로 그래프를 표현할 때 진입 차수 배열 D를 업데이트함진입 차수 배열 D에서 진입 차수가 0인 노드를 선택하고 선택한 노드를 정렬 배열에 저장함, 인접 리스트에서 선택된 노드가 가리키는 노드들의 진입 차수를 1씩 빼기위상 정렬 배열 업데이트진입 차수 배열 D에서 진입 차수가 0인 노.. 2026. 3. 22.
3주차 07 그리디7-1 그리디 알고리즘수행 과정해 선택: 현재 상태에서 가장 최선이라고 생각되는 해 선택적절성 검사: 현재 선택한 해가 전체 문제의 제약 조건에 벗어나지 않는지 검사해 검사: 현재까지 선택한 해 집합이 전체 문제를 해결할 수 있는지 검사, 전체 문제 해결하지 못하면 1로 돌아가 같은 과정 반복문제 035 동전 개수의 최솟값 구하기 (백준 11047)주어진 금액을 만들 수 있는 경우의 수 중 동전을 가장 적게 사용하는 경우의 동전 개수 구하기동전 적게 사용하려면 큰 금액의 동전부터 사용할 것#include #include using namespace std;int main() { int N, K; cin >> N >> K; vector A(N); for (int i = 0; i > A[i]; }.. 2026. 3. 14.
2주차 5-3 삽입 정렬선택 데이터를 정렬된 데이터 범위 내에서 적절한 위치에 삽입하는 것방법현재 index의 데이터 값을 선택현재 선택한 데이터가 정렬된 데이터 범위에 삽입될 위치를 탐색삽입 위치부터 index에 있는 위치까지 shift 연산 수행삽입 위치에 현재 선택한 데이터를 삽입하고 index 증가시킴전체 데이터의 크기만큼 index가 커질 때까지(더 선택할 데이터가 없을 때까지) 반복시간 복잡도 O(n^2)적절한 삽입 위치를 알기 위해 이진 탐색 과 같은 탐색 알고리즘 사용하여 시간 복잡도 줄일 수 있음문제 018 ATM 인출 시간 계산하기 (백준 11399)사람 5명이 각각 돈을 인출하는 데 걸리는 시간의 총합 중 최솟값 구하기N의 최댓값이 1000, 시간 제한 1초이므로 시간 복잡도 O(n^2) 이.. 2026. 3. 8.
1주차 01. 시간 복잡도https://www.youtube.com/watch?v=v0ZF1cA0afA시간복잡도: 주어진 문제를 해결하기 위한 연산 횟수빅 오메가: 최선일 때 best case의 연산 횟수빅 세타: 보통일 때 average case의 연산 횟수빅 오: 최악일 때 worst case의 연산 횟수코딩 테스트에서는 빅 오 표기법을 기준으로 수행 시간을 계산1억번 정도의 연산에 1초가 걸린다고 생각하고 문제를 풀 것O(n log n) 과 O(n^2)은 테스트 케이스의 개수가 많아질수록 그 수행 시간이 엄청나게 차이나므로 풀이 방법을 고를 때 n log2 n의 시간 복잡도를 가지는 방식으로 푸는 것이 좋음시간 복잡도를 알고리즘 선택의 기준으로 사용ex. 버블 정렬 vs. 병합 정렬 어떤 방식을 사용할까?.. 2026. 3. 1.