강 연결 성분(Strongly Connected Component)이란? 강 연결 성분이란 방향 그래프에서 연결 성분 내의 임의의 두 정점 u와 v에 대해서 u에서 v로 가는 경로가 있는 동시에, v에서 u로 돌아오는 경로가 있는 연결 성분이다. 강 연결 성분은 그 정의의 특징 상 단절 정점이나, 다리 간선을 포함하지 않는데, 생각해보면 당연하다. 강 연결 성분 내의 특정 정점을 제거함으로써, 두 개 이상의 연결 성분으로 나뉘지도 않고 그러한 간선도 존재하지 않는다. 아래 그림을 살펴보면, 그 의미를 더욱 쉽게 파악할 수 있을 것이다. 색이 같은 정점들을 한번 살펴보면, 임의의 두 정점에 대해서 오고 가는 길이 있다는 것을 확인할 수 있다. 반대로, 색이 다른 정점끼리 오고 가려면, 어느 한 방향은 막히..
백준 2309 🔲 내 풀이 #include using namespace std; int n = 9, k = 7; int a[9]; vector result(7); void combi(int start, vector b) { if (b.size() == k) { if (accumulate(b.begin(), b.end(), 0) == 100) { copy(b.begin(), b.end(), result.begin()); } return; } for (int i = start + 1; i > a[i]; } vect..
커널로의 진입이 필요한 시점은 3가지 존재한다. InterruptTrap (software interrupt)System Call 이 중에서 인터럽트가 어떻게 커널 코드로 들어가고 어떤 처리가 일어나는지 알아보자. 인터럽트란? 인터럽트란 비동기적 이벤트가 발생했다는 사실을 주변장치로 알리는 방법을 뜻한다. 여기서 비동기란 이벤트가 언제 일어날 지 알 수 없다는 뜻인데, 이는 우리가 키보드를 언제 두드릴지 모르는 것과 같다고 생각하자. 반대로 동기란 이벤트가 일어날 시간이 정해져 있다는 뜻이다. 인터럽트가 발생하면 가장 먼저 PIC(Programmable Interrupt Controller)에 신호가 도착한다. PIC 칩은 곧장 CPU로 신호를 전달하는 프로세스를 거친다. 이때 Clock 인터럽..
* 이 글은 알고리즘에 관해 학습하며 정리한 글입니다. 틀린 점이나, 고쳐야 할 부분이 있으면 알려주세요..! 위상 정렬이란? 위상 정렬이란(Topological Sort) : 사이클이 없는 방향 그래프(Directed Acyclic Graph, DAG)에서 정점을 선형순서로 나열하는 것이다. 이때 DAG, 즉 사이클이 없는 방향 그래프란 주로 노드들 간에 우선순위를 나타내기 위해서 사용한다. 만약 노드들간에 사이클이 존재한다면, DAG라고 볼 수 없다. 즉, 우선 순위가 존재하는 노드들 간에 순서를 나타낸 것인데, 만약 우선순위가 동일하다면 그 중 임의의 하나를 선택한다. 그래서 위상 정렬은 여러 값이 나올 수 있다. 일반적으로 위상 정렬을 사용하는 때는 의존 관계가 존재할 때, 수행 가능한 작업 순서..
Operation System의 발전 이전에는 Operation System이 없었기 때문에 직접 수동으로 하드웨어 장치를 제어하였다. 하지만 이러한 방법은 너무 효율이 떨어졌기에 모니터라는 것을 만들게 되었다. 모니터는 일련의 과정을 제어하는 소프트웨어이다. 따라서 프로그램들이 묶여있으며 그 순서대로 실행될 수 있도록 도와준다. 그리고 이렇게 여러 개의 프로그램들을 묶어놓고 있다가 차례로 하나씩 실행시켜 놓는 방식을 일괄 처리 즉, Batch System이라고 한다. 모니터는 이러한 Simple Batch System 안에서 일련의 과정들이 차례로 수행되었다. Uni-programming 위 그림은 Uniprogramming의 CPU의 동작 방식을 나타낸 것이다. _Run_이라는 상자가 있는 동안에는 ..