트리(Tree) 자료구조의 기본 개념과 활용
자료구조는 프로그램의 효율성과 직결되는 중요한 요소입니다. 다양한 자료구조 중에서도 트리(Tree)는 계층적 데이터를 효과적으로 표현하는 비선형 자료구조의 대표적인 예시입니다. 특히 웹 프론트엔드 개발에서 자주 접하는 DOM(Document Object Model)이 트리의 한 형태로 구현되어 있어, 트리에 대한 이해는 웹 개발자에게 필수적입니다. 이 글에서는 트리 ...
7월 5일 02:58에 게시됨
연결 리스트 노드 조작: 쌍 교체, 순위 기반 삭제, 교차점 탐지, 순환 감지
노드 쌍 교체
인접 노드 교체를 위해 가상 헤드 노드를 생성합니다. 현재 포인터를 가상 헤드에 위치시킨 후, 다음 두 노드가 존재할 때까지 반복합니다. 세 개의 임시 포인터를 활용해 노드 연결 관계를 재구성합니다.
class ListNode:
def __init__(self, value=0, next_node=None):
self.val = value
self.next = next_node
def swap_node_pairs(h ...
7월 2일 04:37에 게시됨
Codeforces 라운드 #478 (Div. 2) 문제 해설
A. 아람 문자 문제
문제 설명: 아람어에서 단어는 객체만을 나타낼 수 있습니다. 아람어 단어에는 특성이 있습니다:
단어에 같은 문자가 한 번 이상 나타나지 않으면 루트입니다.
루트와 모든 순열은 동일한 객체를 나타냅니다.
단어 y의 루트 x는 y에 나타나는 모든 문자를 각 문자가 한 번만 포함하는 단어입니다. 예를 들어, "aaaa", "aa", " ...
7월 2일 03:08에 게시됨
순환 연결리스트를 이용한 원숭이 왕 선정 알고리즘
문제: head가 헤더 노드가 없는 순환 연결리스트를 가리키고 있을 때, 각 노드에는 데이터 필드(num)와 포인터 필드(link)가 포함됩니다. 데이터 필드에는 정수가 저장되며, i번째 노드의 데이터 필드 값은 i입니다. 함수를 작성하여 순환 연결리스트를 사용하여 원숭이 왕을 선택하는 과정을 시뮬레이션하세요: 첫 번째 노드부터 시작하여 "카운트"를 반복하고, ...
6월 29일 01:47에 게시됨
알고리즘 노트 및 문제 해결 전략
P2569 https://www.luogu.com.cn/problem/P2569
이 문제를 참고하세요.
/*단조큐로 dp 최적화
주식을 매수하는 전이 방정식에서 j는 순차적으로 열거됩니다. 주식을 매수하는 것이므로 보유한 주식은 점점 증가할 것이며,
현재의 결정이 나중에(j가 더 클 때) 사용될 수 있으므로 먼저 구해야 합니다.
마찬가지로 주식을 매도할 때 보유한 주식은 점점 줄어들고,
즉 현재 ...
6월 27일 03:51에 게시됨
C 언어 양방향 연결 리스트(Doubly Linked List) 구현 및 구조 분석
1. 기초 데이터 타입 및 상태 코드 정의
연산의 성공, 실패, 메모리 할당 오류 등의 상태를 명확하게 처리하기 위해 열거형(enum)을 활용한 상태 코드를 정의합니다. 또한, 노드에 저장될 데이터의 타입을 별도로 지정하여 추후 확장성을 높입니다.
#ifndef COMMON_DEFS_H
#define COMMON_DEFS_H
#include <stdio.h>
#include <stdlib.h>
typedef enum {
...
6월 25일 19:04에 게시됨
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에 게시됨