데이터 구조와 알고리즘의 기본 개념

데이터 구조의 핵심 개념 데이터 구조 관련 용어 데이터 정의: 정보를 담는 매체로, 기호들의 집합입니다. 컴퓨터 프로그램이 처리하는 원재료 역할을 합니다. 데이터 요소 정의: 데이터의 기본 단위로, 일반적으로 하나의 완전한 개체를 의미합니다. 데이터 항목: 데이터 요소를 구성하는 더 이상 분할할 수 없는 최소 단위입니다. 예시: 학생 정보는 하나의 데이 ...

9월 15일 09:19에 게시됨

실험 2

#include <stdio.h> #include <stdlib.h> #include <time.h> #define STUDENT_COUNT 5 #define RANGE_START 397 #define RANGE_END 476 #define SHORT_RANGE 21 int main() { int counter; int category; int random_value; srand(time(NULL)); counter = 0; while(counter < STUDENT_COUNT) { category ...

7월 27일 23:32에 게시됨

파이썬 슬라이싱의 이해와 활용

파이썬 선형 구조의 특징 파이썬에서 리스트, 튜플, 문자열과 같은 선형 구조는 다음과 같은 주요 특징을 가집니다: 반복 가능 (Iterable): for ... in 구문을 사용하여 요소들을 순회할 수 있습니다. 길이 측정 가능: len(x) 함수를 통해 길이를 얻을 수 있는 컨테이너 객체입니다. 인덱스 접근: 정수 인덱스(양수 또는 음수)를 사용하여 개별 요소에 접근할 ...

7월 22일 19:49에 게시됨

이진 트리 재귀 완전 정복: 직관에서 원리 이해로

서론: 재귀에 대한 솔직한 고백 재귀를 코딩할 때 종종 이런 경험이 있다. 코드는 작동하지만, "왜 이게 맞는지"는 설명하기 어렵다. 예를 들어: 왜 트리를 해제할 때 후위 순회를 써야 할까? 어떤 문제에서는 논리합(||)을 쓰고, 어떤 문제에서는 논리곱(&&)을 쓸까? 함수를 분리해서 작성해야 하는 경우는 언제일까? 이 글은 ...

7월 10일 05:14에 게시됨

CSP-J 재시험 경험담

T1 분배 문제 이 문제는 최대 나머지를 계산하는 간단한 알고리즘을 요구했습니다. 주어진 범위 내에서 최대값을 찾는 방식으로 접근했습니다. #include <iostream> using namespace std; int main() { int total, start, end; cin >> total >> start >> end; int maxRemain = 0; for(int i = start; i > queries; for(int i = 0; i < size; ...

7월 8일 18:11에 게시됨

확장된 범위의 유니온-파인드 구조 및 BOI2003 팀 문제 해설

이 문제는 확장된 범위의 유니온-파인드(Union-Find) 데이터 구조를 활용한 알고리즘 문제입니다. 일반적인 유니온-파인드는 요소 간 연결 관계를 표현하지만, 이 문제에서는 추가적인 속성(친구/적 등)을 고려해야 합니다. 확장된 범위 유니온-파인드는 복수의 속성을 다루기 위해 여러 영역(domain)을 생성합니다. 예를 들어, 인물 x의 친구 관계는 x, 적은 x+n으로 매 ...

7월 4일 19:14에 게시됨

Python 리스트(List) 완벽 가이드: 생성부터 고급 연산까지

Python 리스트(list)는 가장 기본적이면서도 강력한 데이터 구조 중 하나입니다. 이 가이드에서는 리스트의 생성, 조회, 수정, 삭제 등 핵심적인 조작 방법을 코드 예제와 함께 상세히 설명합니다. 1. 리스트 생성 리스트는 대괄호 [] 안에 쉼표로 구분된 값을 넣어 생성합니다. 문자열과 마찬가지로 인덱스는 0부터 시작하며, 슬라이싱(slicing)과 결합(concatenation)이 ...

7월 3일 20:37에 게시됨

구아바 테이블: 다차원 데이터 처리

다차원 데이터 테이블 일반적으로 2차원 테이블은 행과 열의 교차점에 데이터가 저장되는 구조로 볼 수 있습니다. 만약 테이블에서 추가적인 그룹화와 인덱싱이 필요하며, 각 차원에 식별자(예: 다중 인덱스)를 부여해야 한다면 더 복잡한 다차원 데이터 구조가 필요합니다. 구아바 테이블은 3차원 이상의 다차원 구조를 직접 지원하지는 않지만, 테이블과 맵, 리스트 등 ...

6월 15일 18:07에 게시됨

Java에서 스택을 활용한 효율적인 데이터 처리와 계산 기법

스택의 개념과 Java에서의 구현 방식 스택(Stack)은 후입선출(LIFO: Last In, First Out) 원칙에 따라 동작하는 자료구조로, 데이터의 추가와 제거가 한쪽 끝에서만 이루어진다. 이 구조는 함수 호출 관리, 수식 계산, 문법 분석 등 다양한 소프트웨어 설계 영역에서 핵심적인 역할을 한다. Java에서는 java.util.Stack 클래스를 통해 기본적인 스택 기능을 제공하지만, ...

6월 12일 22:58에 게시됨

Python namedtuple: 네임드튜플 완벽 가이드

일반 튜플의 한계 튜플을 레코드로 사용할 때의 단점은 각 항목이 실제로 무엇을 의미하는지 알 수 없다는 점입니다. 개발자 본인만 알 뿐, API 제공자라면 호출자는 문서를 통해서만 각 인덱스가 무엇을 나타내는지 파악해야 합니다. 요구사항이 변경되어도 문서가 업데이트되지 않으면 쉽게 오류가 발생합니다. 값을 가져올 때마다 0번, 1번, 2번 인덱스를 사용해야 합니 ...

6월 9일 18:27에 게시됨