Java 연결 리스트 기본 개념 및 구현
연결 리스트는 가변 길이의 객체 배열과 유사한 동적 데이터 구조입니다. 이는 데이터 저장 용량 제한이 없고 빠른 탐색 속도를 제공하여 데이터 구조의 여러 문제를 해결합니다. 기존 배열은 고정된 크기로 인해 데이터 삽입, 삭제, 수정 시 번거롭다는 단점이 있습니다. 이러한 단점을 극복하기 위해 연결 리스트는 동적 배열 역할을 수행할 수 있습니다.
연결 리스트의 ...
7월 25일 20:58에 게시됨
이진 인덱스 트리와 세그먼트 트리를 활용한 효율적인 알고리즘 해결 방안
이 문제는 주로 자료구조를 다루며, O(n log²n) 시간 복잡도를 가지는 이진 인덱스 트리와 이분 탐색 조합이 O(n log n)의 세그먼트 트리 이분 탐색보다 빠르다는 점을 보여줍니다. 세그먼트 트리는 상수 최적화가 필요할 정도로 20ms 차이로 시간 초과가 발생합니다.
공식을 통해 k 라운드(모두 사용) 후 체력이 0이 되는 지점을 이분 탐색으로 찾을 수 있습니다. 그 다음 ...
7월 25일 13:03에 게시됨
이진 트리의 다양한 연산
이진 검색 트리를 활용한 다양한 연산 방법을 살펴봅니다. 아래 내용은 이진 검색 트리(BST)에서 값 검색, 유효성 확인, 최빈값 찾기, 공통 조상 찾기, 삽입 및 삭제 등을 다룹니다.
BST에서 값 검색
다음과 같이 반복문을 사용해 특정 값을 검색할 수 있습니다.
Node* searchBST(Node* root, int target) {
if (!root) return nullptr;
while (root) {
...
7월 24일 20:05에 게시됨
뱀 게임 구현을 통한 소프트웨어 설계 실습
뱀 게임의 기본 개념
게임의 기원과 진화
1976년 Gremlin Industries의 아케이드 게임 'Blockade'에서 시작된 뱀 게임은 플레이어가 성장하는 뱀을 조종해 음식을 먹으며 벽이나 자신의 몸과 충돌을 피하는 단순한 메커니즘으로 발전했습니다. 다양한 플랫폼으로 확장되며 게임 역사의 아이콘으로 자리잡았습니다.
게임플레이 메커니즘
사용자는 입력 장치로 뱀의 이동 방 ...
7월 24일 18:20에 게시됨
Java 코딩 인터뷰에서 흔히 빠지는 함정: 정렬부터 싱글턴까지 핵심 포인트 분석
채용 시즌이 다가오면 개발자들의 가장 큰 관문 중 하나는 기술 면접이다. 특히 Java를 주력으로 사용하는 엔지니어라면, 단순히 개념을 아는 것을 넘어서 정확한 구현과 세부적인 이해가 요구된다. 많은 지원자가 스프링의 의존성 주입이나 JVM 메모리 모델에 대해 설명할 수 있지만, 막상 백보드에 버블 정렬을 작성하라고 하면 반복문의 범위 조건을 잘못 설정하거나, ...
7월 24일 16:16에 게시됨
실시간 제어 시스템을 위한 C++ STL 알고리즘 가이드
1. 변경되지 않는 시퀀스 알고리즘
이 알고리즘들은 작업하는 컨테이너의 요소를 변경하지 않습니다.
1.1 find와 find_if
find(begin, end, value): value와 같은 첫 번째 요소를 찾아 반복자를 반환 (없으면 end 반환)
find_if(begin, end, predicate): 조건자(predicate)를 만족하는 첫 번째 요소를 찾음
find_end(begin, end, sub_begin, sub_end): 부분 시퀀스가 마지 ...
7월 24일 00:09에 게시됨
C 언어에서 변수 교환 방법 3가지
프로그래밍을 하다 보면 두 변수의 값을 서로 교환해야 하는 상황이 빈번하게 발생한다. 가장 일반적인 방법은 임시 변수를 사용하는 것이지만, 면접이나 코딩 테스트에서 임시 변수 없이 값을 교환하는 방법을 물어보는 경우도 많다. 본 글에서는 C 언어를 기준으로 변수 교환의 세 가지 방법을 살펴보도록 한다.
1. 임시 변수 방식 (Three-Variable Method)
가장 기본 ...
7월 23일 11:44에 게시됨
Codeforces Round 982 (Div. 2) 문제 해결 및 코드 분석
A 문제: 최적 직사각형 둘레
문제의 핵심은 최종 도형의 둘레가 최대 너비와 높이를 가진 직사각형의 둘레와 같다는 결론을 도출하는 것입니다.
#include
using namespace std;
typedef long long ll;
void solve() {
int test_case;
cin >> test_case;
while (test_case--) {
int shape_count;
cin >> shape_count;
...
7월 20일 09:07에 게시됨
힙(Heap) 자료구조
목차
기초 지식
이진 트리
포화 이진 트리
완전 이진 트리
정의
인터페이스 (최소 힘 예시)
노드 삽입 - push
노드 삭제 - pop
힙 구축 - make_heap
힙 정렬 - heap_sort
요약
1. 기초 지식
이진 트리:
n개의 노드로 구성된 트리 형태의 자료 구조로, 각 노드는 최대 두 개의 자식 노드를 가질 수 있습니다.
포화 이진 트리:
각 레벨의 노드 수가 최대로 채워져 ...
7월 19일 20:28에 게시됨
ABC388 문제 해설 및 코드 풀이
C 문제: 과자 쌍 찾기
각 과자에 대해 크기의 두 배 이상인 과자를 이진 탐색으로 찾아, 이 과자와 쌍을 이룰 수 있는 과자의 수를 계산합니다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
typedef long long ll;
int main() {
int n;
cin >> n;
vector<int> desserts(n);
...
7월 17일 07:24에 게시됨