2025/06 3

11. [C++] 파티션 메모리 복사 (dd 명령어, 파일 입출력)

개요eMMC와 같은 저장 장치는 하나의 물리적 장치입니다.이 장치를 논리적으로 나누는 것을 파티션이라고 하는데, 저장장치 안에서 영역을 구분해주는 역할을 합니다.리눅스와 같은 운영체제에서는 커널 내부에 VFS(Virtual File System)이라는 추상화 계층이 있어 여러 파일 시스템과 장치 파일을 통합 관리합니다. eMMC와 같은 특정 하드웨어에 유저가 접근하려면, VFS가 유저의 요청을 디바이스 드라이버로 전달하고, 드라이버가 하드웨어와 직접 통신하여 데이터를 읽거나 씁니다. 따라서 유저는 직접 물리 메모리에 접근하지 않고, 커널을 통해 메모리와 하드웨어 자원에 접근할 수 있습니다. 리눅스 커널 내부의 VFS(Virtural File System)는 /proc, /sys, /dev 와 같은 가상 ..

C++ 2025.06.03

10. [C++] 가중치가 없는 그래프에서 사이클 탐지 및 지름 구하기

문제)N개의 정점과 M개의 간선을 가진 가중지가 없는 그래프 G가 주어진다. 그래프 G 에서 사이클을 이루는 노드들이 존재할 경우 사이클에 포함된 노드를 제거한 이후 남은 노드 및 간선에서 가장 먼 두 노드의 거리를 출력한다. 예시 입력)10 111 22 33 13 44 55 62 78 99 10 단계1. 가중치가 없는 양방향 그래프를 구성한다. : 연결 확인 시 어느 방향으로든 이동 가능한 경우 graph[A].push_back(B), graph[B].push_back(A)로 인접리스트 구현#include #include #include using namespace std;const int MAX = 100005;vector graph[MAX];int main() { int N, M; ci..

C++ 2025.06.03

09. [C++] 벡터와 리스트에서의 erase/remove 사용법

벡터와 리스트에서의 erase 사용법에 대해 알아보기 전에 벡터와 리스트를 잠시 비교해보겠습니다.vector와 list는 모두 sequence container로, sequence container에는 forward_list, list, deque, vector, array 등이 있습니다. list의 경우에는 bidirectonal iterator를 사용하는 이중 연결리스트(앞뒤 이동만 가능)이고, vector의 경우에는 contiguous iterator를 사용하는 연속된 배열(Random access 지원)이다. vector는 인덱스 접근이 빠르고 메모리를 효율적으로 사용할 수 있다는 장점이 있지만 연속된 배열이기 때문에 앞이나 중간에 데이터를 삽입하거나 삭제하면 해당 원소의 뒤 원소들을 모두 이동..

C++ 2025.06.01