알고리즘 문제 풀이: 정렬, 우선순위 큐 및 동적 계획법 활용
1. 참가자 순위 결정 및 상위 K명 선정
이 문제는 주어진 기준에 따라 참가자들의 점수를 계산하고, 이를 기반으로 상위 K명의 참가자를 선정하는 문제입니다. 선정된 참가자는 원래의 ID 순서로 정렬하여 출력해야 합니다.
각 참가자는 두 개의 값(x, y)을 가지고 있으며, 최종 점수는 x + 2*y로 계산됩니다. 점수가 같을 경우, 원래 ID가 작은 참가자가 우선순위를 가집 ...
9월 17일 00:51에 게시됨
포브스 부자 순위 조회 시스템
포브스 잡지는 매년 전 세계 최고 부자들의 순위를 발표합니다. 이 문제에서는 특정 연령대 내에서 가장 부유한 사람들을 찾는 시뮬레이션을 구현해야 합니다. N명의 자산 정보가 주어지면, 각 질의에 대해 지정된 연령 범위 [Amin, Amax] 내에서 자산이 가장 많은 M명을 출력하는 것이 목표입니다.
입력 형식
첫 줄에 사람 수 N과 질의 수 K가 주어집니다. 다음 N줄에는 ...
9월 13일 06:50에 게시됨
선택 정렬 알고리즘의 동작 원리 및 자바 구현 분석
선택 정렬 개요
선택 정렬 (Selection Sort) 은 정렬되지 않은 데이터 집합에서 가장 작은 (또는 큰) 값을 찾아 해당 위치로 이동시키는 반복적인 과정을 기반으로 합니다. 기본적으로 전체 데이터를 두 개의 영역으로 나눕니다. 하나는 이미 정렬이 완료된 부분이고, 다른 하나는 아직 처리되지 않은 미정렬 부분입니다.
동작 메커니즘
오름차순 정렬을 기준으로 설명하 ...
9월 4일 17:05에 게시됨
Java Collections 유틸리티 클래스의 주요 기능 활용
Java Collections 유틸리티 클래스의 주요 기능 활용
Java 컬렉션 프레임워크의 핵심 인터페이스인 List, Set, Map에 이어 이번에는 java.util.Collections 클래스를 살펴보겠습니다. Collection 인터페이스와 혼동하지 않도록 주의해야 하며, Collections는 다양한 컬렉션 작업을 위한 정적 메서드들을 제공하는 유틸리티 클래스입니다.
1. 컬렉션 정렬 기능
데이터 정렬 ...
8월 21일 06:23에 게시됨
Java로 구현하는 핵심 정렬 알고리즘의 이해와 활용
1. 삽입 정렬 (Insertion Sort)
삽입 정렬은 현재 위치의 요소를 이미 정렬된 앞부분의 적절한 위치에 찾아 넣는 방식입니다. 구현이 간단하며 데이터가 거의 정렬된 상태에서는 매우 효율적입니다. 시간 복잡도는 평균 $O(n^2)$이며, 안정 정렬(Stable Sort)에 속합니다.
public void insertionSort(int[] data) {
int len = data.length;
for (int i = 1; i < ...
8월 16일 16:41에 게시됨
정수 배열의 홀짝 조건부 정렬
주어진 정수 시퀀스를 특정 규칙에 따라 재정렬하는 문제에 대해 살펴보겠습니다. 이 문제에서는 10개의 정수를 입력받아 다음과 같은 세 가지 주요 조건에 맞춰 정렬해야 합니다.
홀수는 배열의 앞쪽에 배치하고, 짝수는 뒤쪽에 배치합니다.
홀수들 사이에서는 내림차순(큰 수부터 작은 수 순서)으로 정렬합니다.
짝수들 사이에서는 오름차순(작은 수부터 큰 수 순서)으 ...
8월 4일 11:33에 게시됨
CV에 혜택이! YTU 그리디 훈련 2(부분 주석)
경고: J 문제는 40분 동안 오류를 찾지 못해 시간 초과 발생(dp>검색)
간단한 문제 풀이(첫 번째 문제는 쉽게 해결됨)
1743 문제 A
#include<bits/stdc++.h>
using namespace std;
const int MAX_SIZE = 100010;
int n, k, sortedData[MAX_SIZE], accumulatedSum[MAX_SIZE], result, index1, index2, total;
int main() {
cin >> n >> k;
for(int i= ...
7월 28일 23:16에 게시됨
최대 백색 타일 수 계산: 슬라이딩 윈도우와 경계 조건 처리
문제 해결을 위해 배열을 사용하려 했으나 메모리 초과가 발생하여, 원본 데이터를 직접 수정하며 슬라이딩 윈도우 방식으로 접근했다. 특히 경계 조건 처리는 항상 어려운 부분이지만, 핵심은 구간 커버리지 문제에서 각 구간의 우측 끝점을 기준으로 왼쪽으로 확장 가능한 최대 길이를 탐색하는 것이다.
주요 전략은 다음과 같다:
먼저 타일의 시작 위치 기준으로 정 ...
7월 27일 06:37에 게시됨
C++ 표준 템플릿 라이브러리(STL) 알고리즘 핵심 정리 및 활용 가이드
1. 비변형 시퀀스 알고리즘 (Non-modifying Sequence Operations)
컨테이너의 원소를 직접 변경하지 않고 탐색하거나 검사하는 알고리즘들입니다.
1.1 탐색 (find 계열)
find(first, last, value): 특정 값과 일치하는 첫 번째 원소의 반복자를 반환합니다.
find_if(first, last, pred): 조건자(predicate)를 만족하는 첫 번째 원소를 찾습니다.
find_end(first1, last1, ...
7월 6일 03:14에 게시됨
배열에서 K번째로 큰 원소 찾기
문제 개요정렬되지 않은 정수 배열에서 k번째로 큰 원소를 찾는 알고리즘 문제입니다. 예를 들어 [3,2,1,5,6,4]에서 k=2일 경우 결과는 5가 됩니다.접근법 1: 최소 힙 활용크기가 k인 최소 힙을 유지하면 효율적으로 해결할 수 있습니다. 힙의 루트는 항상 현재까지 본 원소 중 k번째로 큰 값이 됩니다.class KthElementFinder {
public int findKthLargest(int[] arr, ...
6월 30일 22:32에 게시됨