본문 바로가기

전체 글

(135)
*Java) 2579번 계단 오르기 (dp) 이 문제의 핵심은 두 가지 경우의 수를 생각하는 것입니다. 바로 직전 계단을 밟지 않고 이전 계단과 현재 계단을 밟는 경우: (2칸) DP[i - 2]​ 바로 직전 계단을 밟고 현재 계단을 밟는 경우: (i-3에서 2칸을 올라오고 i-1에서 한 칸을 올라옴) DP[i - 3] + arr[i - 1]) + arr[i]​ DP[i-3]이 1칸+1칸으로 올라오는 경우가 있기 때문에 2칸을 올라간다. import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int N = in.nextInt(); // 계단의 개수 입력 int[] DP = new in..
Java) 1463번 1로 만들기 (dp) 이 문제는 dp를 사용하는 문제입니다. N부터 시작하여 1까지 내려가는 과정에서 숫자를 만드는데 필요한 횟수를 메모제이션 합니다. 1. 1을 빼는 경우를 계산 2. 2로 나누어 떨어지는 경우 1을 뺀 경우와 비교하여 더 작은 값을 찾음. 3. 으로 떨어지는 경우 1을 뺀 경우와 비교하여 더 작은 값을 찾음. 각각에서 +1을 하는 경우는 1을 뺀 경우, 2로 나눈 경우, 3으로 나눈 경우를 더해주는 것 입니다. import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] dp = new int[n+..
SQL, SQL 문법 SQL 데이터를 쉽게 검색하고 추가, 삭제, 수정 같은 조작을 할 수 있도록 고안된 컴퓨터 언어이다. 관계형 데이터베이스에서 데이터를 조작하고 쿼리하는 수단이다. DML (Data Manipulation Language) 데이터를 조작하기 위해 사용 INSERT, UPDATE, DELETE, SELECT SELECT: 데이터 조회 전체 데이터 조회: SELECT * FROM 테이블명; 특정 컬럼 조회: SELECT 컬럼명1, 컬럼명2 FROM 테이블명; 컬럼에 별명 부여: SELECT 컬럼명 AS 별명 FROM 테이블명; 컬럼 합성: SELECT CONCAT(컬럼명1, '구분자', 컬럼명2) AS '새 컬럼명' FROM 테이블명; 중복행 제거: SELECT DISTINCT 컬럼명 FROM 테이블명; 정렬..
Java) 백준 1003번 피보나치 함수 (DP) 피보나치 함수를 이용하여 0과 1의 사용빈도를 출력하는 문제입니다. 이 문제는 다이나믹 프로그래밍을 사용해야 합니다! 재귀 Top-Down Bottom-Up 1. 재귀 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.IOException; public class Main { static int count_0 = 0; static int count_1 = 0; public static void main(String[] args) throws IOException { BufferedReader br..
DP) Dynamic Programming optimization problen 문제를 해결하는 최적의 답 maximum, minimum을 구하는 문제 => 가장 빨리 도착하는 경로의 소요 시간?, 주식을 사고 팔 때 가장 높은 수익? 다이나믹 프로그래밍 큰 문제를 작은 문제로 나눠서 푸는 방법 큰 문제를 작은 문제를 여러 번 재사용한다는 특징을 이용함 이전의 작은 문제의 값을 기억하고 같은 문제가 나오면 저장해둔 결과를 가져옴 다이나믹 프로그래밍 2가지 조건 최적 부분 구조(Optimal Substructure): 작은 문제들의 해결 방법을 합치면 큰 문제 단, subproblems이 독립적이어야 함 중복되는 부분(Overlapping Subproblems): 문제를 작은 문제로 나누었을 때, 동일한 문제가 반복적으로 발생하는 경우 다이나믹 프..
Java) 백준 1874 스택 수열 프로그램 로직 사용자로부터 수열의 크기(n)를 입력. 수열의 각 요소를 입력받아 배열(arr)에 저장. 배열의 각 요소에 대해 다음을 수행: 스택이 비어 있거나, 스택의 맨 위 요소가 현재 배열 요소보다 작으면, 스택에 새로운 값을 '푸시'(+ 연산). 스택의 맨 위 요소가 현재 배열 요소와 같으면, 스택에서 값을 '팝'(- 연산). 스택의 맨 위 요소가 현재 배열 요소보다 크면, 수열을 재구성할 수 없으므로 "NO"를 출력하고 프로그램을 종료. import java.util.ArrayList; import java.util.Scanner; import java.util.Stack; public class Main { public static void main(String[] args) { Scanner..
Stack) Stack Stack 데이터를 입시 저장하기 위한 선형 자료구조 후입후출 'LIFO' (Last in First Out) 마지막에 들어온 요소가 가장 먼저 나감 Stack의 기본 연산 Push: 스택의 맨 위에 새로운 요소 추가 Pop: 스택의 맨 위 요소를 제거 Peek: 스택의 최상위 요소를 조회함 IsEmpty: 스택이 비어있는지 확인 import java.util.Stack; public class StackExample { public static void main(String[] args) { // 스택 생성 Stack stack = new Stack(); // Push 연산 예시 stack.push(1); // 스택에 1 추가 stack.push(2); // 스택에 2 추가 stack.push(3); ..
*Java) 백준 1966번 프린터 큐 1966번 문제입니다. 프린터가 여러 문서를 어떤 순서로 출력하는지를 알아내는 문제입니다. 만약 중요도가 같은 문서가 여러 개 있다면, 입력된 순서대로 출력됩니다. 여기서 3번째 케이스를 계속 헷깔렸어요.. 이렇게 생각하면 편하더라구요! '1' 1 9 1 1 1 9 > 1 > 1 > 1 > '1' > 1 따라서 5입니다! 저는 입력한 순서라고 해서 9 > '1' > 1 > 1 > 1 > 1 이런 줄 알았어요.. PriorityQueue 원소를 중요도 순서로 정렬합니다. 단 PriorityQueue는 입력 순서를 보장하지 않습니다. 따라서 Queue를 사용하여 문서의 순서를 유지합니다. Document 클래스 생성 Document 클래스를 통해 우선 순위와 인덱스 값을 저장합니다. 이렇게 하면 찾으려는 인..

728x90