이진 트리 재귀 완전 정복: 직관에서 원리 이해로
서론: 재귀에 대한 솔직한 고백
재귀를 코딩할 때 종종 이런 경험이 있다. 코드는 작동하지만, "왜 이게 맞는지"는 설명하기 어렵다. 예를 들어:
왜 트리를 해제할 때 후위 순회를 써야 할까?
어떤 문제에서는 논리합(||)을 쓰고, 어떤 문제에서는 논리곱(&&)을 쓸까?
함수를 분리해서 작성해야 하는 경우는 언제일까?
이 글은 ...
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에 게시됨
Java에서의 Map 데이터 구조
Java 프로그래밍 언어에서 기본적인 데이터 구조는 배열과 참조(가상 포인터)로 구성됩니다. 모든 데이터 구조는 이 두 가지 기본 요소를 통해 구현됩니다. HashMap은 배열과 연결 리스트의 결합체로, 데이터 구조에서 일반적으로 "연결된 해시"라고 불립니다.
배열이란?
Java는 동일한 타입의 요소를 저장하는 고정 크기의 연속형 컬렉션을 제공합니다. 이는 배 ...
6월 7일 18:01에 게시됨
데이터 구조와 알고리즘 소개
데이터 구조란?
데이터 구조는 컴퓨터에서 데이터를 저장하고 조직하는 방법을 의미합니다. 이것은 서로 간에 하나 이상의 특정한 관계가 있는 데이터 요소들의 집합입니다.
알고리즘이란?
알고리즘은 잘 정의된 계산 과정으로, 입력값을 받아 출력값을 생성하는 프로세스입니다. 쉽게 말해, 입력 데이터를 처리하여 출력 결과로 변환하기 위한 일련의 단계들입니다. ...
6월 5일 19:28에 게시됨