[백준] 2558번 - A+B - 2 [Java][C++]
문제 링크 1. 문제 풀이 두 정수 $A$, $B$ 의 합을 산술 연산자를 활용하여 구하면 된다. 2. 코드 1. 구현 [Java] import java.io.*; public class Main { public static void main(String[] args) throws IOException { Buf...
문제 링크 1. 문제 풀이 두 정수 $A$, $B$ 의 합을 산술 연산자를 활용하여 구하면 된다. 2. 코드 1. 구현 [Java] import java.io.*; public class Main { public static void main(String[] args) throws IOException { Buf...
문제 링크 1. 문제 풀이 단조 덱을 활용한 슬라이딩 윈도우와 우선순위 큐 두 가지 방식 모두 적용 가능한 문제로 구간의 최솟값과 최댓값이 모두 필요한데 이를 각각 단조 증가 덱, 단조 감소 덱 또는 최소힙, 최대힙으로 관리하며 최댓값과 최솟값의 차를 $c$ 와 비교하는 방식으로 해결했다. 2. 코드 1. 덱을 이용한 구간 최댓값 트릭 ...
문제 링크 1. 문제 풀이 두 정수 $A$, $B$ 의 합을 구하는 문제로 수의 범위가 매우 크다. 큰 수를 자릿수 배열을 활용해서 직접 다루거나 큰 수 연산을 도와주는 라이브러리를 활용하면 해결할 수 있다. 2. 코드 1. 임의 정밀도 / 큰 수 연산 [Java] 큰 정수의 연산을 처리할 수 있는 BigInteger 클래스를 활용했다...
문제 링크 1. 문제 풀이 $N \times N$ 크기의 배열 $A$ 의 각 원소들은 $A[i][j] = i \times j$ 일 때, 이를 일차원 배열에 오름차순으로 옮겼을 때 $K$ 번째 수를 구해야 하는 문제다. $N$ 이 최대 $10^5$ 이어서 직접 배열을 만들고 정렬하는 방법으로는 해결할 수 없는데 이분 탐색과 매개 변수 탐색을 활용...
문제 링크 1. 문제 풀이 단조 덱을 활용한 슬라이딩 윈도우의 대표적인 문제로 인덱스를 저장하는 단조 덱을 활용하면 해결할 수 있다. 주어진 수열의 인덱스를 저장할 단조 덱을 선언한 후 수열을 순회하며 단조 덱의 맨 앞 원소가 구간의 최솟값인 인덱스가 되도록 유지했다. 슬라이딩 윈도우 과정에서 단조 덱의 최솟값 인덱스가 구간을 벗어나면 단조 ...
1. 덱을 이용한 구간 최댓값 트릭 덱을 이용한 구간 최댓값 트릭(Sliding Window Maximum)은 배열이나 리스트와 같은 데이터 구조에서 연속된 부분 배열의 최솟값이나 최댓값을 효율적으로 계산할 수 있는 일종의 테크닉이다. 구간 합을 구할 때는 윈도우에서 나가는 정보와 들어오는 정보만 기존의 구간 합에서 갱신해주면 됐지만 최솟값이나 최댓...
문제 링크 문제 설명 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작...
문제 링크 문제 설명 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작...
문제 링크 문제 설명 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작...
1. 슬라이딩 윈도우 슬라이딩 윈도우(Sliding Window)는 배열이나 리스트와 같은 데이터 구조에서 연속된 부분 배열의 합이나 애너그램(Anagram) 등을 효율적으로 계산하는 데 사용되는 일종의 테크닉이다. 주로 고정된 크기의 윈도우(Window)를 활용하여 데이터를 처리하며 이 과정에서 반복적인 계산을 줄여 시간복잡도를 낮출 수 있다. ...