본문 바로가기
728x90

분류 전체보기66

[C#] 객체지향 4가지 특성 객체 지향 프로그래밍이란?컴퓨터 프로그램을 명령어 목록으로 보는 시각에서 벗어나 여러 개의 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것.   1. 캡슐화서로 연관된 속성과 기능을 하나의 캡슐로 만들어 데이터를 외부로부터 보호하는 것. 데이터 보호: 외부로부터 클래스에 정의된 속성과 기능을 보호데이터 은닉: 내부의 동작을 감추고 외부에는 필요한 부분만 노출   2. 상속기존의 클래스를 상속받은 파생 클래사가 기존 클래스의 속성과 매서드를 재사용하고 확장할 수 있게 하는 것. 재사용성: 한 번만 정의하고, 간단하게 재사용 가능  3. 다형성 어떤 객체의 속성이나 기능이 상황에 따라 여러 가지 형태를 가질 수 있는 것.다른 형식들은 동열한 형식처럼 다룰 수 있다.다운 캐스팅과 업 캐스팅 같은 변환 기능.. 2024. 9. 3.
[C#] 메모리의 구조 메모리 구조프로그램이 실행되기 위해서는 프로그램이 메모리에 로드 되어야 합니다.또, 사용되는 변수 등을 저장할 메모리도 필요합니다.  그렇기에 운영체제는 4개의 메모리 공간으로 나눠 제공하고 있습니다.  1. 코드(code) 영역2. 데이터(data) 영역3. 스택(stack) 영역4. 힙(heap) 영역   코드(code) 영역소스코드가 저장되는 영역으로 텍스트 영역이라고도 부릅니다. 0과 1로 이루어진 기계어 형태로 저장됩니다. 실행 파일을 구성하는 함수, 제어문, 상수 등이 저장됩니다.  데이터(data) 영역전역 변수와 정적 변수(static)이 저장되는 영역입니다. 데이터 영역은 프로그램의 시작과 함께 할당되며, 프로그램이 종료되면 소멸합니다.  스택(stack) 영역함수 호출과 관계되는 지역 .. 2024. 8. 26.
[C#] 가비지 컬렉션 (Garbage Collection, GC) 가비지 컬렉션이란? 메모리 영역 중 힙 영역의 경우 메모리를 할당하고 어떤 행동을 하지 않는다면 계속 메모리가 올라온 상태로 유지됩니다. C와 C++에서는 사용자가 직접 할당 해제를 해줘야 했지만 C# 및 JAVA와 같은 언어에서는 가비지 컬렉션이 존재합니다. 가비지 컬렉션이 직접 할당 해제를 해주어 메모리 관리를 편리하게 합니다. 한 마디로 정리하자면 메모리 관리를 자동으로 해주는 녀석인 것입니다.   가비지란?reference type의 변수들은 스택 메모리에 주소값을 저장하고, 힙 메모리에 접근하는 방식으로 사용됩니다. 해당 변수를 사용한 후 함수가 종료되면 지역 변수가 함께 지워지며 스택 메모리에 있는 주소값이 사라지게 된다. 그럼 힙 메모리에 저장된 값은 더 이상 접근할 수 없는 상태가 됩니다... 2024. 8. 22.
[UNITY] 해상도 유지를 위한 레터박스 구현 (feat.UI 잔상 해결) 레터박스란?좌우로 길거나, 위아래로 긴 화면을 비율을 맞추기 위해 검정 화면으로 가리는 행위.    Rect를 가져오고, 비율을 맞춰줍니다. Rect rect = _camera.rect;float scaleHeight = ((float)Screen.width / Screen.height) / (_yRatio / _xRatio);float scaleWidth = 1 / scaleHeight;  맞춘 비율을 Rect 변수에 적용해줍니다. if (scaleHeight   이후 카메라에 적용해줍니다. _camera.rect = rect;  카메라가 프레임을 렌더링하기 전에 호출됩니다.private void OnPreCull(){ GL.Clear(true, true, Color.black);}  아래와 같이.. 2024. 8. 22.
[알고리즘 이론] 정렬 알고리즘 정렬 알고리즘이란?배열 등의 데이터 단위를 사용자에 맞춰 순서대로 배치 시켜주는 알고리즘.  선택 정렬 이름과 같이 현제 위치에 들어갈 값을 찾은 후, 정렬하는 알고리즘입니다. 시간 복잡도의 경우 O(n^2)입니다.1. 배열의 크기 만큼 반복문문을 돌려준다. 2. 현제 위치부터 배열의 크기만큼 반복문을 다시 돌려준다. 3. 가장 작은 값을 찾고, 해당 값을 해당 위치와 스왑한다. 4. 2로 돌아간다. int i,j;int aLength;for (i = 0; i   버블 정렬 현제 인덱스의 값과 뒤 인덱스 값을 비교한 후, 큰 값을 뒤로 보내며 정렬하는 알고리즘입니다.시간복잡도는 O(n^2)입니다. 1. 배열 전체를 반복문을 돌려준다. 2. (배열 크기 - 현 인덱스)값만큼 반복분 돌려준다. 3. 현 인덱.. 2024. 8. 18.
[알고리즘 이론] 시간 복잡도와 공간 복잡도 복잡도란, 1. 알고리즘의 성능, 효율성을 나타내는 척도2. 알고리즘의 사용 시간 및 사용공간이 얼마나 되는지 객관적으로 비교할 수 있는 기준 3. 빅오(O), 오메가(Ω), 세타(Θ) 표기법 등이 잇다.  빅-오(Big-O) 표기법 최악의 경우를 나타냅니다.즉, 알고리즘을 실행 했을 때 최대로 걸릴 수 있는 시간을 나타냅니다.  O(1): n이 증가하여도 실행 시간은 동일한 알고리즘 (EX, 기본 연산 수)O(log n): 연산이 한 번 실행될 때 마다 데이터의 크기가 절반 감소하는 알고리즘 (EX, 이진 탐)O(n): n의 값이 증가함에 따라 선형적으로 증가하는 알고리즘 (EX, 1중 for)O(n log n): O(n)의 알고리즘과 O(log n)의 알고리즘이 중첩된 형태 (EX, 퀵 정렬)O(n^.. 2024. 8. 8.
[2023_GameProgramming(Team)] WINAPI에서 폰트 바꾸기, Text 하나하나 나오도록 만들기 사실 폰트 하나 바꾸는건 간단했다. AddFontResource(TEXT("Orbit Regular.ttf")); HFONT currentFont = CreateFont(50, 0, 0, 0, 0, 0, 0, 0, HANGEUL_CHARSET, 0, 0, 0, VARIABLE_PITCH | FF_ROMAN, TEXT("Orbit Regular")); HFONT oldFont = (HFONT)SelectObject(_dc, currentFont); SelectObject(_dc, oldFont); 위처럼 4출만 있고, 2번째 SelectObject하기 전에 Text를 출력하면 끝이다. 근데 뭔가 안 바뀌더라 다름 아니라... TTF파일 열고 폰트 다운 받는 곳의 이름과 파일 탐색기에 써 있는 이름이 다른데.. 2023. 11. 30.
[2023_GameProgramming(Team)] C++, WINAPI로 WebSite와 FileExplorer열기 이 프로젝트를 기획하며 팀장님과 가장 중요하게 여겼던 부분이 바로 WINAPI런타임시 WebSite를 열고, FileExplorer을 여는 것이다 !!! 사실 많이 어려울거라고 생각했는데 찾아보니 많이 나오더라.. 이렇게 WebSite를 열고 #include int main() { system("explorer https://github.com/DDongYeop"); } 이렇게 FileExplorer을 연다. #include int main() { system("explorer D:\\Dev\\GitHub\\2023_GamePrograming_TeamProject"); } 솔직히 생각보다 훨씬 쉽고, 그냥 아에 똑같더라.. 이렇게 쉬울줄은 몰랐지 !!! 아래는 결과물이다. 단순 함수로만 만들어두고 Ini.. 2023. 11. 30.
[잡담] 블로그 조회수 3000을 넘기며 0부터 시작했던 내 블로그가 3000이 넘었다 !! 처음에 시작할땐 학교 전공동아리 후배들한테 GitHub쪽 알려주려고 시작했었는데 지금 알고리즘 문제 풀이를 하고 있다 !!!! 물론 다른 개발일지나, 자료구조 정리, 알고리즘 정리, Unity 사용 관련도 하려고는 하는데... 생각보다 시간이 나질 않더라 ㅠㅠ 열심히 해야하는데 ㅜㅡㅜ 그래도 이제 개발일지는 조금 조금 써야겠다. 뭘 배웠고, 뭘 했는지는 알고 정리해둬야지. 만들어 둔거 GIF도 같이 올리고 !!! 자료구조 정리도 생각만 하고, 시도를 안 한다 ㅜㅡㅜ 예전에 DFS, BFS할땐 신나서 몇시간 동안 공부하고 막 쓰고 했는데, 그 의지는 다시 데려와야 뭔가 많이 쓸거 같긴하다. https://ddongyeop.tistory.com/25 DFS.. 2023. 11. 30.
[백준 9461] 파도반 수열 문제 https://www.acmicpc.net/problem/9461 9461번: 파도반 수열 오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 www.acmicpc.net 문제 분석 우측에 있는 그림처럼 생긴 그림이 있고, 입력 받은 수의 번째에 생성된 삼각형의 크기가 몇인지 출력하는 문제이다. 알고리즘 설계 우선 테스트 케이스의 개수를 담을 t와 테스트 케이스를 담을 n을 int형으로 선언한다. n이 100 이하로 나오기에 longlong을 가지고 있을 vector을 하나 만들고 크기를 101로 만들어준다. 이후 1, 2, 3번 인덱스는 1로 초기화 시켜준다. 이.. 2023. 11. 30.
[백준 1654] 랜선 자르기 문제 https://www.acmicpc.net/problem/1654 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 문제 분석 잘라서 가져야하는 랜선의 개수가 주어지고, 가지고 있는 랜선의 길이가 주어진다. 랜선을 잘라 개수를 맞추는데 최대한 길게 남겨두고, 또 같은 길이로 자른다면 몇 m로 잘라야 하는지 구하는 문제이다. 알고리즘 설계 우선 얻어야하는 랜선의 개수를 정수형 변수 n으로, 랜선들의 길이를 담을 vector vec을 전역변수로 선언한다. main함수에서 몇개의 랜.. 2023. 11. 24.
[프로그래머스] 의상 문제 https://school.programmers.co.kr/learn/courses/30/lessons/42578 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 분석 입을 수 있는 옷의 종류 얼굴, 상의, 하의, 겉옷 4가지가 있다. 같은 종류의 옷은 같이 입을 수 없지만 다른 종류의 옷, 예시를 들자면 얼굴 얼굴 조합은 안되지만, 얼굴 상의 조합은 되는 것이다. 이렇게 옷의 조합이 몇개가 나오는지 계산하는 문제이다. 알고리즘 설계 우선 unordered_map, key는 string, value는 int로 가지는 um을 선언한다. 또 int를.. 2023. 11. 22.
728x90