C++로 배우는 배열과 연결 리스트 기본 연산

배열 (Array) 1. 배열 초기화 // 스택에 할당 int arr[5]; int nums[5] = { 1, 2, 3, 4, 5 }; // 힙에 할당 int* agg = new int[5]; int* ngg = new int[5] {1, 2, 3, 4, 5}; 2. 요소 접근 int getElement(int* data, int idx) { return *(data + idx); } 3. 데이터 삽입 void insertElement(int* data, int len, int value, int pos) { for (int i = len - ...

6월 20일 19:52에 게시됨

스캔라인 알고리즘: 오프라인 2차원 문제 해결 기법

서론 이전에는 잘 이해하지 못해 문제를 풀 때마다 막혔지만, 최근 교육에서 이 개념을 다시 배우면서 깊이 이해하게 되어 이를 정리한 노트를 작성하게 되었습니다. 여기서 다루는 스캔라인은 더 정확히 말해 오프라인 2차원 수 문제를 의미하며, 한 차원은 스캔라인으로 관리하고 다른 차원은 자료구조로 관리하는 방식입니다. 개념 2차원 수 문제를 평면에 나타내면, 각 ...

6월 17일 18:53에 게시됨

파이썬 핵심 개념과 예제

1. Python과 Java 비교 Python: 인터프리터 언어로 실행 시 직접 해석. 동적 타입 지원으로 유연하나 런타임 오류 가능성 존재 Java: 컴파일 언어로 머신 코드 변환 후 실행. 정적 타입으로 컴파일 시 오류 검출 가능 2. 최대 재귀 깊이 기본값 998. sys.setrecursionlimit()로 조정 가능(3925-3929 범위 권장) 3. Python2 vs Python3 차이 입력 함수: Py2 - raw_inpu ...

6월 17일 05:28에 게시됨

효율적인 프로그래밍 학습 노트 관리 기술

노트 작성 도구 선택 프로그래밍 학습에 적합한 도구 비교: OneNote 장점: 다중 콘텐츠 지원, 자유로운 레이아웃, 크로스 디바이스 동기화 단점: 저사양 장비에서 성능 저하 가능 Evernote 장점: 강력한 검색 기능, 직관적인 분류 체계 단점: 무료 버전 기능 제한 Notion 장점: 커스터마이징 가능한 계층 구조, 협업 기능 단점: 초기 학습 ...

6월 15일 19:39에 게시됨

무료 자바스크립트 알고리즘 학습 프로젝트 실전 가이드

알고리즘 학습을 위한 효과적인 오픈소스 프로젝트를 소개한다. javascript-algorithms는 200개 이상의 알고리즘과 자료 구조를 자바스크립트로 구현한 저장소로, 각 모듈마다 상세한 설명, 테스트 코드, 성능 분석이 포함되어 있다. 프로젝트 구조 이해하기 이 프로젝트는 모듈식 설계를 채택하여 각 알고리즘이 독립된 모듈로 존재한다. 다음은 주요 디렉터리 구조다: ...

6월 14일 00:37에 게시됨

C 언어로 구현하는 원형 큐 (Circular Queue) 자료구조

원형 버퍼(环形缓冲区)는 전형적인 생산자-소비자(Producer-Consumer) 모델을 구현하는 자료구조입니다. 비유하자면, 생산자가 계속 물을 채우고 소비자가 물을 빼는 웅덩이와 같습니다. 여기서 의문이 생길 수 있습니다. "생산자와 소비자 사이에 왜 굳이 버퍼 메모리 공간을 두는가? 생산자의 파이프 끝을 소비자의 파이프 시작 부분에 직접 연결하면 공간을 절약할 수 ...

6월 11일 20:45에 게시됨

Trie 자료구조 문제 풀이 분석

Luogu P6587 시퀀스 최적화 제약 조건 \(x \le 20\) 활용, ID의 하위 \(x\) 비트를 Trie 구조와 세그먼트 트리 기법으로 처리 #include<iostream> #include<vector> using namespace std; typedef long long ll; const int MAX_NODES = 4e6 + 5, MAX_ELEMS = 2e5 + 5; int elem_count, query_count, base_data[MAX_ELEMS]; int child_nodes[MAX_ELEMS*20][2] ...

6월 9일 21:15에 게시됨

세그먼트 트리의 기본 연산과 구현

단일 요소 수정 및 구간 질의 기본적인 세그먼트 트리는 이진 트리 구조로 단일 요소 수정과 구간 질의를 지원합니다: #include <iostream> #include <algorithm> using namespace std; const int MAX_N = 200010; struct TreeNode { int left, right, max_val; } tree[MAX_N * 4]; void update_node(int idx) { tree[idx].max_val = max(tree[idx*2 ...

6월 1일 04:21에 게시됨

문자열 처리 알고리즘: 역순 및 변환 기법

문자열 역순 처리 알고리즘 문자열을 효율적으로 역순으로 처리하는 기본 알고리즘은 두 개의 포인터를 사용하여 문자열의 양쪽 끝에서 중앙으로 이동하며 요소를 교환하는 방식입니다. 이 방법은 공간 복잡도 O(1)로 문자열을 역순으로 만들 수 있어 매우 효율적입니다. 문제 1: 문자열 전체 역순 이 문제에서는 문자 배열을 입력으로 받아 해당 배열의 내용을 역순으로 ...

5월 25일 22:27에 게시됨

파이썬 알고리즘 및 자료구조 기초 문제 풀이

시간 복잡도 비교 문제 AList = [1, 2, 3], BSet = {1, 2, 3}일 때 다음 질문에 답하시오: 값 4를 찾을 때, 리스트와 집합 중 어느 쪽의 최악 시간 복잡도가 더 큰가? 값 4를 삽입할 때, 리스트와 집합 중 어느 쪽의 최악 시간 복잡도가 더 큰가? 답변: 검색 연산의 경우, 리스트와 집합 모두 O(n)의 시간 복잡도를 가진다. 삽입 연산의 경우, 리스트는 O(n), 집합은 평 ...

5월 25일 12:42에 게시됨