Choose a default theme

You can change your theme from the menu

SARO

스택은 마지막에 넣은 값을 먼저 꺼내는 LIFO 자료형이다. 기본 구현과 경계 오류에서 출발해 괄호 검사, 수식 변환·평가, DFS 프레임, 실행 취소, 최솟값·단조 스택을 예제와 완전 열거 검사로 설명한다. 스택(stack)은 마지막에 넣은 원소를 먼저 꺼내는 후입선출, 즉 LIFO 규칙을 가진 추상 자료형이다. 원소를 넣는 push, 맨 위 원소를 제거하며 반환하는 pop, 제거하지 않고 보는 peek 또는 top이 핵심

0

동적 배열은 길이와 내부 용량을 구분하고 필요할 때 저장소를 확장하는 자료구조다. 두 배 확장 구현, 복사 횟수 분석, 삽입·삭제와 축소 진동, 참조 수명, 예약·메모리·동시성의 한계를 실행 예제와 모델 기반 검사로 설명한다. 동적 배열(dynamic array)은 원소를 순서대로 담는 내부 배열을 사용하면서 필요한 경우 더 큰 저장 공간으로 옮겨 길이를 늘리는 자료구조다. 배열 인덱스로 원소를 읽는 장점과 실행 중 원소를 추

0

이분 탐색은 단조적인 비교·판정 결과를 이용해 후보 구간을 줄이며 경계를 찾는 알고리즘이다. 이 문서는 lower·upper bound, 중복과 범위 조회, 최소 용량과 정수 제곱근 응용, 정확성·종료 증명과 실제 대조 검사를 설명한다. 이분 탐색(binary search), 또는 이진 탐색은 비교나 판정 결과를 이용해 후보 구간의 한쪽을 버리며 답을 찾는 방법이다. 정렬된 배열의 값 검색이 대표적이지만, 더 일반적으로는 거짓

0

자료 구조는 데이터를 저장하고 찾기·추가·삭제·순회 같은 연산을 지원하는 방식이다. 이 문서는 배열·연결 리스트·스택·큐·해시·트리·힙을 실제 예제로 비교하고, 참조 공유와 동점 처리, LRU 캐시 구현과 검증까지 설명한다. 자료 구조는 데이터를 조직해 저장하고 필요한 연산을 지원하는 방식이다. 원소를 어디에 두는가뿐 아니라 찾기·추가·삭제·순회가 어떻게 동작하며 무엇을 보장하는지가 중요하다. 같은 값 목록도 배열, 연결 리스

0

시간 복잡도는 입력 크기에 따른 알고리즘 작업량의 증가를 분석한다. 이 문서는 O·Ω·Θ, 최선·최악·기댓값·분할 상환 분석을 구분하고, 반복문·재귀·복사·해시·전처리 비용을 실제 연산 횟수 예제로 계산한다. 시간 복잡도는 입력 크기에 따라 알고리즘의 작업량이 어떻게 증가하는지 표현하는 개념이다. “이 함수는 0.2초 걸린다”는 특정 실행의 측정과 다르다. 같은 알고리즘도 컴퓨터, 언어, 입력 내용에 따라 실제 시간이 달라지므

0

알고리즘은 문제의 입력을 올바른 출력으로 바꾸는 계산 절차다. 이 문서는 탐색·정렬·완전 탐색·탐욕법·동적 계획법·그래프를 실제 예제로 설명하고, 정확성의 근거와 시간·공간 비용, 전제 위반과 검증 방법을 함께 다룬다. 알고리즘은 주어진 문제를 해결하기 위해 수행하는 명확한 절차다. 프로그램이 특정 언어와 실행 환경에서 동작하는 구현이라면, 알고리즘은 그 구현이 따라야 하는 계산의 방법에 초점을 둔다. 같은 탐색 절차를 Pyt

0

TypeScript는 JavaScript에 정적 타입 검사와 타입 표현을 더한다. 이 문서는 타입 추론·유니온·제네릭·객체 모델을 실제 예제로 설명하고, 컴파일 오류 수정과 외부 주문 데이터 검증을 통해 타입 검사와 런타임 검증의 역할을 구분한다. TypeScript는 JavaScript 코드에 정적 타입 정보를 붙이고 실행 전에 여러 종류의 불일치를 찾아내는 언어와 도구 체계다. 함수가 숫자를 받는다고 선언했는데 문자열을 전

0

JavaScript는 웹 브라우저와 서버 등에서 사용되는 프로그래밍 언어다. 이 문서는 값과 타입 변환, 객체와 클로저, 비동기 실행, 화면과 데이터 경계를 예제로 설명하고, 고객별 주문 합계 기능을 구현하고 검증하는 과정까지 다룬다. JavaScript는 웹 페이지의 동작뿐 아니라 서버와 여러 실행 환경에서 사용하는 범용 프로그래밍 언어다. ECMAScript는 핵심 언어 규칙을 정의하고, 브라우저나 Node.js 같은 호스

0

SQLite는 애플리케이션 안에서 실행되는 SQL 데이터베이스 엔진이다. 이 문서는 파일과 연결의 관계, 자료형과 제약, 트랜잭션·쓰기 경쟁·WAL·백업을 실제 예제로 살펴보고, 로컬 저장소를 설계하고 운영할 때의 판단 기준을 설명한다. SQLite는 애플리케이션 내부에서 실행되는 관계형 데이터베이스 엔진이다. 별도의 데이터베이스 서버에 네트워크 요청을 보내는 대신, 프로세스에 연결된 라이브러리가 SQL을 처리하고 파일을 읽고

0

SQL은 관계형 데이터베이스의 구조와 데이터를 조회·변경하는 언어다. 이 문서는 고객과 주문 예제를 통해 조회·조인·집계·트랜잭션의 결과를 추적하고, NULL·중복·동시성·실행 계획에서 자주 생기는 오류와 해결 방법을 설명한다. SQL은 관계형 데이터베이스에서 자료 구조를 정의하고 데이터를 조회·변경하며 접근과 트랜잭션을 다루는 언어다. 테이블에서 필요한 행과 열을 고르고, 여러 테이블의 관계를 연결하고, 그룹별 합계나 순위를

0

Python은 간결한 문법과 풍부한 라이브러리를 갖춘 범용 프로그래밍 언어다. 이 문서는 값과 객체의 관계부터 함수·예외·파일 처리·실전 CSV 집계까지, 특징이 실제 코드에서 어떻게 작동하고 어떤 실수를 주의해야 하는지 설명한다. Python은 자동화·데이터 처리·웹 서버·과학 계산 등 다양한 작업에 쓰이는 범용 프로그래밍 언어다. 읽기 쉬운 문법, 표준 라이브러리, 확장 패키지가 널리 활용되지만, “코드가 짧다”는 설명만으

0

Rust는 소유권·빌림·타입 검사를 통해 메모리 안전성과 실행 성능을 함께 추구하는 프로그래밍 언어다. 이 문서는 주요 특징이 실제 코드에서 어떻게 작동하는지, 컴파일 오류를 어떻게 해석하고 수정하는지, 어떤 비용과 제약을 고려해야 하는지를 예제와 함께 설명한다. Rust는 실행 성능과 메모리 안전성을 함께 다루는 정적 타입 프로그래밍 언어다. 운영체제와 가까운 저수준 구성 요소부터 서버, 명령줄 도구, 다른 언어에서 호출할

0

Windows(윈도우)는 Microsoft가 개발하는 운영체제 제품군이다. 이 문서는 오늘날의 Windows NT 계열을 중심으로 응용 프로그램 실행, 사용자 모드와 커널 모드, 파일 경로 및 개발 도구의 관계를 설명한다. 개별 버전의 설치 요구 사항이나 지원 종료일은 버전별 공식 문서에서 확인해야 한다. Windows는 하드웨어 자원을 관리하고 응용 프로그램이 실행될 기반을 제공한다. 파일 탐색기는 파일을 다루는 그래픽 인터

0

WSL(Windows Subsystem for Linux)은 Windows에서 Linux 배포판과 명령줄 도구를 실행할 수 있도록 제공되는 기능이다. Windows의 개발 도구와 Linux의 실행 환경을 함께 사용하는 데 쓰인다. WSL 자체의 버전, 각 배포판의 WSL 1·WSL 2 실행 방식, 배포판 버전은 서로 다른 정보다. WSL 2는 가상화 기술을 이용해 관리되는 경량 가상 머신 안에서 Linux 커널을 실행한다. 사

0

운영체제(operating system, OS)는 CPU·메모리·저장 장치 같은 자원을 관리하고 응용 프로그램이 실행될 환경을 제공하는 시스템 소프트웨어이다. 프로그램은 하드웨어를 매번 직접 제어하는 대신 운영체제가 제공하는 프로세스, 주소 공간, 파일과 같은 추상화를 이용한다. 문서 편집기와 음악 재생기가 동시에 실행된다고 가정하자. 두 프로그램이 CPU와 메모리, 파일 장치를 아무 규칙 없이 독점하면 다른 작업을 진행하기

0

문맥 교환은 현재 실행 흐름의 상태를 저장하고 다른 흐름의 상태를 복구하여 CPU 실행 대상을 바꾸는 과정이다. 운영체제는 레지스터와 실행 위치 등 재개에 필요한 정보를 관리한다. 타이머나 대기 사건 등의 계기로 실행 제어권을 얻고 스케줄링 정책에 따라 전환할 수 있다. 한 프로세스가 입출력을 기다리면 그 상태를 보관하고 준비된 다른 프로세스를 실행한다. 나중에 원래 프로세스는 중단 지점의 상태로 돌아온다. 모든 커널 진입이

0

macOS는 Apple의 Mac 컴퓨터용 운영체제이다. Finder와 Dock 같은 그래픽 환경, 응용 프로그램 프레임워크, Unix 계열의 명령줄 환경을 함께 제공한다. Mac은 컴퓨터 제품군의 이름이고 macOS는 운영체제의 이름이므로, 두 용어를 문서와 문제 보고에서 구별하는 것이 정확하다. macOS의 기반에는 Darwin 계열 구성 요소가 있으며 커널은 Mach·BSD 계통의 기술과 Apple의 구성 요소를 결합한다.

0

Linux(리눅스)는 좁게는 운영체제의 핵심인 커널을, 넓게는 이 커널을 사용하는 운영체제 계열을 가리킨다. 커널은 CPU 실행 시간, 메모리, 장치와 네트워크를 관리한다. 사용자가 설치하는 Ubuntu·Debian 같은 배포판은 여기에 명령줄 도구, 라이브러리, 패키지 관리 체계와 응용 프로그램을 결합한 시스템이다. Linux 커널과 배포판은 같은 범위의 이름이 아니다. 커널 버전이 같아도 배포판이 제공하는 패키지 버전과 기

0

세마포어는 카운터와 대기·신호 연산으로 자원 사용이나 실행 순서를 조절하는 동기화 수단이다. 허용 가능한 자원 수를 카운터로 나타내고 획득 시 감소, 반환 시 증가시키는 식으로 사용한다. 초기값과 연산 순서에 따라 의미가 달라진다. 동시에 세 개의 작업만 특정 자원을 사용하게 하려면 초기 허용 수를 3으로 설정하고 작업 종료 시 허용을 돌려줄 수 있다. 카운터를 잘못 반환하면 제한이 깨지거나 영원히 기다릴 수 있다. 뮤텍스의

0

Mac(맥)은 Apple의 개인용 컴퓨터 제품군이다. 노트북과 데스크톱 모델을 포함하며, macOS는 이 컴퓨터에서 사용하는 운영체제의 이름이다. 개발 환경을 설명할 때 Mac이라는 제품군, 개별 모델, CPU 구조, macOS 버전을 나누어 적으면 호환성 문제를 더 정확하게 설명할 수 있다. MacBook 계열은 노트북, iMac은 화면을 통합한 데스크톱, Mac mini와 Mac Studio는 별도 디스플레이와 함께 사용하

0

조건 변수는 공유 상태가 원하는 조건을 만족할 때까지 실행 흐름이 기다리도록 돕는 동기화 수단이다. 보통 뮤텍스와 함께 사용한다. 대기 연산은 잠금을 놓고 기다린 뒤 다시 획득하며, 깨어난 흐름은 공유 상태의 조건을 재검사한다. 생산자·소비자 큐에서 소비자는 큐가 비어 있으면 기다리고 생산자가 항목을 넣으면 알림을 보낼 수 있다. 알림 자체를 데이터나 영구 저장된 사건으로 취급하지 않는다. 깨어났어도 조건이 다시 바뀌었을 수

0

뮤텍스는 공유 자원의 임계 구역에 한 번에 하나의 실행 흐름만 들어가도록 하는 상호 배제 동기화 수단이다. 잠금을 획득한 흐름이 보호된 작업을 수행하고 끝나면 해제한다. 공유 상태에 접근하는 모든 관련 경로가 같은 보호 규칙을 따라야 한다. 공유 카운터를 읽고 증가시켜 저장하는 여러 단계의 연산을 잠금으로 보호하면 동시 갱신의 유실을 막는 데 도움이 된다. 한 경로라도 잠금 없이 접근하면 보호가 깨질 수 있다. 예외나 조기 반

0

스레드는 프로세스 안에서 독립적인 실행 흐름을 표현하는 단위이다. 여러 스레드가 주소 공간을 공유하면서 각각 실행 상태를 가진다. 각 스레드는 프로그램 카운터와 레지스터, 스택 등의 상태를 유지한다. 공유 데이터에 동시에 접근할 수 있어 작업 분담과 함께 동기화 문제가 발생한다. 서버가 여러 요청을 처리하거나 계산 작업을 여러 코어에 나누는 데 활용할 수 있다. 공유 캐시를 이용해 스레드 사이에 자료를 전달할 수도 있다. 스레

0

TLB는 가상 주소를 물리 주소로 변환하는 정보를 빠르게 재사용하기 위한 하드웨어 캐시이다. 자주 사용하는 페이지 변환을 보관해 매 접근마다 페이지 테이블을 탐색하는 비용을 줄인다. 찾는 변환이 없으면 구현에 맞는 추가 처리가 필요하다. 같은 메모리 영역을 반복해서 읽는 프로그램은 변환 정보를 재사용할 수 있다. 반대로 많은 페이지를 넓게 건드리면 TLB 부담이 커질 수 있다. TLB miss와 page fault는 같은 사건

0