분류 전체보기

    C# string.format, 문자열 보간($)을 이용한 문자열 출력 방법

    1. C# string 출력 방법 : 기본 출력 //직접 Console.WriteLine("BlockDMask1"); //변수 이용 string str2 = "BlockDMask2"; Console.WriteLine(str2); 2. C# string 출력 방법2 : Format() 메소드 //format 이용 방법1 Console.WriteLine("Example1 : {0}, {1}", "BlockDMask", 1212); //format 이용 방법2 int num = 999; string str1 = string.Format("Example2 : {0}, {1}, {2}", "BlockDMask", 3434, num); 3. C# string 출력 방법3 : 문자열 보간 //문자열 보간 이용 방법 ..

    C 조건부 전처리기

    1. #if #elif #else #endif 기존에 알고있는 조건문인 if else 와 동일한 내용이다 하지만 전처리기라는 부분에서 if else와 차이점은 매크로로 정의된 값에 따라 원하는 코드를 동작할 수도 있고 동작시키지 않을수도 있는 것이다. #include #define NUM 10 int main() { #if NUM == 10 printf("매크로로 정의된 NUM의 값은 10\n"); #elif NUM == 20 printf("매크로로 정의된 NUM의 값은 20\n"); #else printf("매크로로 정의된 NUM의 값은 10도 20도 아님\n"); #endif return 0; } #if 0, #if 1 평가값이 0 이면 다음줄 부터의 내용을 건너뛰고, 평가값이 0이 아니면 처리한다...

    C++ 클래스 템플릿에 선언된 friend 함수를 외부에 정의하는 방법

    적용 시 오류 template class Stack { ... public: friend std::ostream& operator

    [골5] 13549 - 숨바꼭질 3

    #include #include #include #include #include using namespace std; using IntPair = pair; #define MAX 100001 bool vis[MAX]; int MinSec(int n, int k) { priority_queue q; // 경과 시간을 기준으로 우선순위 큐 (짧을수록 우선순위 크다) q.push({ 0, n }); vis[n] = true; while (!q.empty()) { auto top = q.top(); q.pop(); int curSec = top.first, curLoc = top.second; // 목적지 도달 if (curLoc == k) return curS..

    PCB(Process Control Block)란?

    PCB는 운영체제가 프로세스를 제어하기 위해 정보를 저장해 놓는 곳으로, 프로세스의 상태 정보를 저장하는 자료구조다. 운영체제에서 프로세스는 PCB로 표현된다. 프로세스가 생성될 때마다 고유의 PCB가 생성되고, 주기억장치에 유지되며, 프로세스가 완료되면 PCB도 함께 제거된다. 프로세스 상태 관리와 문맥 교환(Context switch)을 위해서 필요하다. 운영체제에 따라 PCB에 포함되는 항목이 다를 수 있지만, 일반적으로 다음과 같은 정보가 포함되어 있다. PCB에 포함되는 정보 포인터 : 부모프로세스에 대한 포인터, 자식 프로세스에 대한 포인터, 프로세스가 위치한 메모리 주소에 대한 포인터, 할당된 자원에 대한 포인터 정보 등. 프로세스 상태(Process State) : 생성(create), 준..

    [골4] 1967 - 트리의 지름

    #include #include #include using namespace std; #define MAX 10002 vector node[MAX]; bool vis[MAX]; int res, endPoint; void DFS(int p = 1, int len = 0) { if (vis[p]) return; vis[p] = true; if (res ..

    문맥 교환 Context Switching

    하나의 프로세스가 CPU를 사용 중인 상태에서 다른 프로세스가 CPU를 사용하도록 하기 위해, 이전의 프로세스의 상태(문맥)를 보관하고 새로운 프로세스의 상태를 적재하는 작업 프로세스의 문맥(context)은 PCB에 저장된다. 인터럽트(interrupt)가 발생하면 시스템은 현재 수행 중인 프로세스의 문맥을 저장하고, 이후 해당 프로세스가 재개될 때 복원한다. CPU 코어를 다른 프로세스로 교환 현재 프로세스의 상태를 저장 다른 프로세스의 상태를 복원하는 작업(task)를 말한다. 교환 시점 멀티태스킹 인터럽트 핸들링 사용자 모드와 커널 모드 간의 전환 준비 → 실행, 실행 → 준비, 실행 → 대기 전환 시 문맥 교환 발생 교환 필요한 상황 교환 과정 문맥 교환과 오버헤드 문맥을 교환하는 동안에는 유용..

    [실3] 2407 - 조합

    #include #include #include #include using namespace std; #define MAX 101 int n, m; string Cache[MAX][MAX]; string BigNumAdd(string num1, string num2) { string res; long long sum = 0; while (!num1.empty() || !num2.empty() || sum) { if (!num1.empty()) { sum += num1.back() - '0'; num1.pop_back(); } if (!num2.empty()) { sum += num2.back() - '0'; num2.pop_back(); } res.push_back((sum % 10) + '0'); su..

    캐시가 동작하는 아주 구체적인 원리

    Principle of Locality 지역성에는 시간적 지역성과 공간적 지역성, 순차적 지역성이 있다. 시간적 지역성 : 최근에 액세스 된 프로그램이나 데이터가 가까운 미래에 다시 액세스 될 가능성이 높음을 의미한다. 반복루프, 서브루틴 호출, 공통 변수가 대표적인 예시다. 공간적 지역성 : 기억장치 내에 인접하여 저장된 데이터들이 연속적으로 액세스될 가능성이 높음을 의미한다. 표, 배열의 데이터가 그 대표적 예시다. 순차적 지역성 : 분기가 발생하지 않는 이상 명령어들이 기억장치에 저장된 순서대로 인출되어 실행됨을 의미한다. 이는 공간적 지역성에 편입되어 설명되기도 한다. 한 프로세스 안에도 자주 사용하는 부분과 그렇지 않은 부분이 있기 때문에 운영체제는 프로세스를 페이지(Page)라는 단위로 나눠 ..

    캐시 히트율/메모리 적중률 (Hit Rate)

    캐시 메모리는 CPU의 처리 속도와 주기억장치의 접근 속도 차이를 줄이기 위해 사용하는 고속 Buffer Memory이다. ※ 캐시 메모리 이용 효과 프로그램의 실행과정을 분석해 보면, 주어진 시간 동안에 참조하는 메모리 영역은 국한된다는 사실을 알 수 있다.(메모리 참조의 국부성) 따라서 자주 참조되는 프로그램의 일부를 속도가 빠른 기억장치에 저장해 놓고 실행시키면 프로그램의 총 실행시간을 단축시킬 수 있다. 이때 이용하는 기억장치를 캐시 메모리라고 한다. 캐시 메모리의 특징 캐시는 주기억장치와 CPU사이에 위치하며, 자주 사용하는 프로그램과 데이터를 기억한다. 캐시 메모리는 메모리 계층 구조에서 가장 빠른 소자이며, 처리 속도가 거의 CPU의 속도와 비슷할 정도이다. 캐시를 사용하면 주기억장치를 접근..