분류 전체보기(160)
-
[백준] C# 16926번 배열 돌리기1
문제 이해해당 문제는 같이 회전시킬 좌표들을 하나의 리스트로 인식하여, 회전시킬 수 있어야 한다.예제 입력 1을 예로 들면 2차원 배열을 아래의 두 리스트로 분리한다.1,2,3,4,8,12,16,15,14,13,9,52,3,7,11,10,6이후 회전 시켰다는 것은, 앞에 요소를 다시 뒤로 돌려주면 된다.1,2,3,4,8,12,16,15,14,13,9,5,1,22,3,7,11,10,6,2,3여기까지 진행했다면, 각 배열별로 회전시킨 것과 동일하기 때문에 배열 순서대로 2차원 배열로 만들어주면 된다. 풀이1. 배열의 시작점이 될 좌표(앵커)를 선정해야 한다./// 앵커가 될 수 있는 최대 값은 축이 짝수면 /2 하고 -1을 해야한다./// 만약 /2만 하면 축이 4일때 2값이 리턴되는데 2는 이미 2차원 배..
2026.02.09 -
IL 코드 명령어들
힙 객체(참조 타입 인스턴스)의 맴버 변수접근ldfld(load field) / stfld(storefield) -> 객체의 인스턴스 필드를 읽거나 쓸때 사용 로컬 변수를 읽고 쓸 때예제 코드// 인스턴스 메서드라고 가정 (this 사용 예시를 위해)class Sample{ void Demo(ref int a, int b) { int x = a + b; // 로컬 x x = x + 5; // 로컬 x 갱신 a = x; // ref 인자 a에 값 써넣기 System.Console.WriteLine(x); }}IL 코드.method private hidebysig instance void Demo(int32& ..
2025.09.07 -
[C#] 클로저(closure)
클로저의 개념일반적으로 지역변수는 함수가 끝나면 스택에서 사라진다. 하지만 람다식(익명 메서드)과 같은 함수는 단순히 '코드 조각'이 아니라 외부 변수를 캡쳐해서 함께 저장하는 객체를 만든다. 즉 컴파일러가 람다용으로 힙에 별도의 참조형 객체를 만들어 그 안에 저장한다.이렇듯, 함수(람다, 익명 메서드)가 자기 외부의 지역 변수를 캡처해서, 함수 실행이 끝난 뒤에도 그 변수를 계속 참조할 수 있게 하는 기능을 클로저(Closure)라고 한다.예시void Example(){ var isInit = false; Action callback = uid => { if (isInit) Console.WriteLine("다시 호출됨"); else ..
2025.09.07 -
[그래픽스] 렌더링 파이프라인 (Rendering Pipeline)
해당 내용은 '유니티 그래픽스 최적화 스타트업'을 기반으로 작성하였습니다.정의렌더링 파이프라인(Rendering Pipeline)이란 쉽게 말해, 오브젝트(렌더링하고자 하는 모든것)을 2D 이미지상으로 그리는 과정을 렌더링 파이프라인이라고 한다. 한개의 오브젝트가 렌더링될 때는 일련의 과정을 거치면서 3D 데이터들이 2D 이미지로 구성되어 그려지는 것이다.파이프라인은 크게 애플리케이션(Application), 지오메트리(Geometry), 래스터라이저(Rasterizer)로 나눌 수 있다. (물론 플랫폼마다 조금씩 다를 순 있다..)파이프라인이라는 말에서 유추해볼 수 있듯, 애플리케이션 - 지오메트리 구간의 성능이 원할하더라도 지오메트리 - 래스터라이저 구간의 성능에 과부하가 생긴다면 렌더링 성능이 떨어..
2025.05.02 -
공용 언어 런타임(CLR)의 실행 모델
해당 내용은 서적 CLR via C# 을 기반으로 작성하였습니다. 들어가기 앞서,우리는 여러가지 어플리케이션을 개발할때 개발 목적에 따라 언어를 선택하게 된다. C++과 같은 언어는 Win32 API를 자유로이 쓸 수 있고 메모리로 직접 접근이 가능하여 우리가 원하는 아주 섬세한 부분까지 제어할 수 있기 때문에, 시스템 서비스와 같은 하위 수준의 어플리케이션을 개발할때 적합하고, Visual Basic과 같은 언어는 쉬운 문법, 빠른 UI 디자인 작업 등이 용이하여 고객의 요구 사항이 빈번하게 바뀌는 업무 프로젝트를 진행하기에 아주 적당하다고 할 수 있다. 즉, 기존의 언어 사이에는 우열이 존재하며, 개발 목적에 따라 언어의 선택이 이루어질 수 있고, 이러한 결정은 매우 신중하게 이루어져야 한다. 그러나..
2025.02.02 -
[운영체제] 멀티 스레드 모델
해당 글은 '쉽게 배우는 운영체제' 서적을 기반으로 작성되었습니다. [멀티 스레드 모델]프로세스가 커널 프로세스와 사용자 프로세스로 나뉘듯 스레드도 커널 스레드와 사용자 스레드가 있다.커널 스레드 : 커널이 직접 생성하고 관리하는 스레드이다.사용자 스레드 : 라이브러리에 의해 구현된 일반적인 스레드이다.사용자 스레드가 커널 스레드를 사용하려면 시스템 호출로 커널 기능을 이용해야 한다. 이때 커널 스레드와 사용자 스레드의 대응 방식에 따라 다음과 같이 분류된다. 사용자 레벨 스레드사용자 레벨 스레드는 운영체제가 멀티스레드를 지원하지 않을 때 사용하던 방법으로 초기의 스레드 시스템에서 이용되었다. 이스레드는 사용자 레벨에서 스레드를 구현하기 때문에 관련 라이브러리를 사용하여 구현하며, 라이브러리는 커널이 지..
2024.12.13