본문 바로가기

분류 전체보기100

[C#] 프로그래머스/크기가 작은 부분문자열 문제 숫자로 이루어진 문자열 t와 p가 주어질 때, t에서 p와 길이가 같은 부분문자열 중에서, 이 부분문자열이 나타내는 수가 p가 나타내는 수보다 작거나 같은 것이 나오는 횟수를 return하는 함수 solution을 완성하세요. 예를 들어, t="3141592"이고 p="271" 인 경우, t의 길이가 3인 부분 문자열은 314, 141, 415, 159, 592입니다. 이 문자열이 나타내는 수 중 271보다 작거나 같은 수는 141, 159 2개 입니다. 제한사항 1 ≤ p의 길이 ≤ 18 p의 길이 ≤ t의 길이 ≤ 10,000 t와 p는 숫자로만 이루어진 문자열이며, 0으로 시작하지 않습니다. 출력 예시 t p result 3141592 271 2 5000220839878 7 8 10203 15.. 2024. 3. 4.
[Unity] Object Pooling 오브젝트 풀링 (Object Pooling) 최적화의 꽃, 오브젝트 풀링은 성능 향상을 위해 게임 오브젝트를 미리 생성하고 필요할 때마다 재활용하는 기술이다. 게임에서 동적으로 생성 및 삭제되는 오브젝트의 비용이 큰 경우에 특히 유용하다. 일반적으로 게임에서 오브젝트를 동적으로 생성하고 삭제하는 것은 리소스 소모가 크기 때문에 성능에 부정적인 영향을 미칠 수 있다. 오브젝트 풀링은 이런 비용을 최소화하기 위해 미리 여러 개의 오브젝트를 생성하고, 필요할 때마다 활성화 및 비활성화하여 재사용한다. 생성할 수 있는 오브젝트를 미리 생성해 놓고, 필요할 때만 꺼내어 쓰고 다시 필요없어지면 집어넣는 방식. 오브젝트 파괴 시 작동하는 가비지 콜렉터가 메모리를 좌지우지하는 주요 멤버인데, 이것이 과도하게 활성화되면.. 2024. 2. 29.
[Unity] 스프라이트 아틀라스, GPU 인스턴싱 스프라이트 아틀라스 (Sprite Atlas) 스프라이트 아틀라스는 Unity 2D 에서 사용하는 최적화 기법이다. Unity 엔진에 내장되어 있으며, Project Settings_Editor_Sprite Packer 에서 체크할 수 있다. 2D 프로젝트는 스프라이트와 다른 그래픽스를 사용해 씬의 시각적 요소를 만든다. 그러므로 개발자(혹은 디자이너)는 단일 프로젝트에 다수의 텍스처 파일을 사용한다. 일반적으로 Unity는 씬의 각 텍스처에 대해 드로우콜을 발생시킨다. 따라서 많은 텍스처가 포함된 프로젝트의 경우 여러 개의 드로우 콜이 발생하면서 리소스를 많이 소비하므로 프로젝트의 성능을 저하시킬 수 있다. 스프라이트 아틀라스(Sprite Atlas)는 여러 개의 텍스처를 단일 텍스처로 결합하는 에셋이.. 2024. 2. 28.
[Unity] 배치 (Batch) 배치(Batch)와 배칭 (Batching) 1) 배치(Batch) : SetPass Call 과 DP Call 을 합친 개념이다. * 드로우콜과의 차이점 : 드로우콜은 (렌더 상태 변경 명령 + DP Call)을 포함한 개념으로, 배치가 드로우콜보다 좁은 의미이다. 2) 배칭(Batching)이란 여러 개의 Batch를 하나로 묶는 최적화 기법이다. (드로우콜을 묶어서 처리하기 위함) 기본적으로 드로우 콜을 발생시킬 수 있는 이미지, 텍스쳐, 메테리얼, 쉐이더를 하나로 묶어서 처리한다. 배치의 특징 배치는 SetPass Call + DP Call 개념이다. Render State Changes(렌더 상태 변경)가 아니라 SetPass를 포함하므로, 드로우콜보다 좁은 의미를 가진다. Batch가 적다고 .. 2024. 2. 27.
[Unity] 드로우콜 (Draw Call) 게임에 기능을 모두 넣고 종료 시점까지 한 사이클을 굴렸다면, 최적화라는 과제가 남는다. 게임 개발에서 최적화를 공부할 때 반드시 등장하는 것이 드로우콜과 배칭이다. 드로우 콜(Draw Call) 드로우콜이란 CPU가 GPU에게 오브젝트를 그리라고 명령하는 것을 의미한다. GPU는 CPU에 의해서 처리되고 GPU가 Mesh를 렌더링 할 때 지오메트리 데이터를 읽어오는 공간이 바로 GPU Memory이다. 따라서 Mesh를 그리기 위해서는 GPU Memory에 Mesh 관련 정보가 있어야 한다. GPU는 CPU Memory에 접근할 수 없기 때문에 GPU Memory에 데이터를 다시 복사한다. 이 과정을 거쳐 GPU Memory에는 메쉬 정보가 저장된다. GPU는 그릴 대상에 대한 상태 정보를 담는 테이블.. 2024. 2. 26.
[C#] 프로그래머스/삼총사 문제 한국중학교에 다니는 학생들은 각자 정수 번호를 갖고 있습니다. 이 학교 학생 3명의 정수 번호를 더했을 때 0이 되면 3명의 학생은 삼총사라고 합니다. 예를 들어, 5명의 학생이 있고, 각각의 정수 번호가 순서대로 -2, 3, 0, 2, -5일 때, 첫 번째, 세 번째, 네 번째 학생의 정수 번호를 더하면 0이므로 세 학생은 삼총사입니다. 또한, 두 번째, 네 번째, 다섯 번째 학생의 정수 번호를 더해도 0이므로 세 학생도 삼총사입니다. 따라서 이 경우 한국중학교에서는 두 가지 방법으로 삼총사를 만들 수 있습니다. 한국중학교 학생들의 번호를 나타내는 정수 배열 number가 매개변수로 주어질 때, 학생들 중 삼총사를 만들 수 있는 방법의 수를 return 하도록 solution 함수를 완성하세요. .. 2024. 2. 23.