C++ 제어 구조의 심화 이해와 효율적인 메모리 활용 기법
1. do-while 반복문의 구조와 활용
C++에서 do-while문은 조건식을 평가하기 전에 코드 블록을 최소 한 번은 실행해야 할 때 사용하는 제어 구조입니다.
1.1 기본 메커니즘
do {
// 최소 1회 실행되는 로직
} while (반복_조건);
일반적인 while문은 진입 전 조건을 검사하지만, do-while은 본문을 먼저 실행한 후 마지막에 조건을 확인합니다.
1.2 실전 활용 사례
...
7월 2일 21:50에 게시됨
리눅스 프로세스 신호 생성 및 처리
터미널 키 입력을 통한 신호 발생
사용자는 키보드 조합을 통해 프로세스에 다양한 신호를 전달할 수 있습니다:
Ctrl+C: SIGINT 신호 전송
Ctrl+\: SIGQUIT 신호로 프로세스 종료
Ctrl+Z: SIGTSTP 신호로 포그라운드 프로세스 일시정지
이러한 신호들은 운영체제가 하드웨어 인터럽트를 소프트웨어적으로 시뮬레이션한 결과로, CPU 대상의 인터럽트와 달리 프로세스에 직 ...
6월 29일 03:40에 게시됨
C++ 연관 컨테이너 std::set과 std::map의 활용
std::set: 유일한 요소의 정렬된 집합
std::set은 중복을 허용하지 않는 키(Key)들의 집합을 관리하는 컨테이너입니다. 내부적으로 주로 레드-블랙 트리(Red-Black Tree) 구조로 구현되어 있어, 삽입, 삭제, 탐색 작업 시 O(log N)의 시간 복잡도를 보장합니다. 만약 중복된 값을 허용해야 한다면 std::multiset을 대신 사용하면 됩니다.
주요 제어 메서드
...
6월 27일 05:56에 게시됨
C/C++ 핵심 개념 정리
변수의 유효 범위와 저장 구역
변수는 지역 변수와 전역 변수로 나뉜다. 지역 변수는 중괄호({})로 둘러싸인 코드 블록 내에서만 유효하며, 스택 영역에 할당되어 해당 블록이 종료되면 자동으로 소멸된다. 반면 전역 변수는 프로젝트 전체에서 접근 가능하며, 전역 영역(정적 메모리 영역)에 저장되어 프로그램 종료 시까지 유지된다.
특수한 경우:
지역 블록 내에서 ...
6월 24일 00:54에 게시됨
문자열 동적 계획법: 부분 수열 카운팅, 삭제 연산, 그리고 편집 거리 최적화
1. 서로 다른 부분 수열의 개수 구하기
두 개의 문자열 text와 pattern이 주어졌을 때, text의 부분 수열 중 pattern과 일치하는 경우의 수를 계산하는 문제입니다. 부분 수열이란 원본 문자열에서 문자의 상대적 순서를 유지한 채 일부 문자를 제거하여 만들 수 있는 새로운 문자열을 의미합니다. 결과값은 32비트 부호 있는 정수 범위를 보장합니다.
class Solution {
pu ...
6월 16일 02:33에 게시됨
C++ STL 알고리즘 완전 정복
1. 비수정 시퀀스 알고리즘
이 알고리즘들은 컨테이너의 요소를 변경하지 않고 조작합니다.
1.1 find 및 find_if
find(begin, end, value): value와 첫 번째로 일치하는 요소를 찾아 반복자를 반환합니다 (찾지 못하면 end 반환).
find_if(begin, end, predicate): 조건자를 만족하는 첫 번째 요소를 찾습니다.
find_end(begin, end, sub_begin, sub_end): 서브시퀀스 ...
6월 15일 00:03에 게시됨
여러 언어로 Hello World 출력하기
실행 환경: macOS
IDE: VSCode + CodeRunner
C
hello_c.c
#include <stdio.h>
int main(void)
{
puts("안녕하세요, C입니다!");
return 0;
}
실행 명령어
gcc hello_c.c -o hello_c && ./hello_c
C++
hello_cpp.cpp
#include <iostream>
int main() {
std::cout << "안녕하세요, C++입니다!" << std: ...
6월 14일 00:58에 게시됨
ABC363 문제 풀이
A - 값의 범위
주어진 값 r이 어느 범위에 속하는지 확인하고, 그 범위의 상한에서 r을 뺀 값을 출력하면 된다.
100 미만이면 100-r, 200 미만이면 200-r, 300 미만이면 300-r을 출력한다.
코드 확인하기
#include<bits/stdc++.h>
using namespace std;
int main() {
int r;
cin >> r;
if(r < 100) {
cout << 100 - r;
...
6월 13일 16:20에 게시됨
고대 수학 지식을 활용한 비트 연산 최적화
결합 법칙의 중요성은 컴퓨팅에서 매우 크며, 특히 고성능 계산 및 암호학 분야에서 중요한 역할을 합니다. 이 글에서는 결합 법칙을 이용하여 비트 조작을 최적화하는 방법과 이를 C++에서 구현하는 예제를 다룹니다.
유한체 지수 연산 (모듈로 지수 연산)
공개 키 암호화 알고리즘인 RSA와 Diffie-Hellman에서 핵심적인 연산입니다. 모듈로 곱셈을 반복 적용하여 큰 수 ...
6월 12일 17:02에 게시됨
행렬 곱셈과 고속 지수 연산
행렬의 기초
기본 개념
행렬은 행과 열로 구성되는 2차원 배열이다. n×m 행렬은 n개의 행과 m개의 열을 가진 구조를 의미한다.
두 행렬을 곱할 때는 첫 번째 행렬의 열 개수와 두 번째 행렬의 행 개수가 반드시 일치해야 한다. 예를 들어, 2×3 행렬과 3×4 행렬을 곱하면 결과는 2×4 행렬이 된다.
[A_{a \times n} \times B_{n \times m} = C_{a \times m}]
행렬 곱셈의 ...
6월 11일 19:01에 게시됨