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