목록하루 1공부 (7)
난 정말 최고야 멋있어
오늘한것 dp 문제풀이 // 123 더하기 import java.lang.reflect.Array; import java.util.*; public class Main{ static int[] _dp = new int[12]; public static int dp(int n){ if (n < 0) return 0; if (_dp[n] != 0) return _dp[n]; _dp[n] = dp(n - 1) + dp(n - 2) + dp(n- 3); return _dp[n]; } public static void main(String[] args){ Scanner sc = new Scanner(System.in); int T = sc.nextInt(); _dp[1] = 1; _dp[2] = 2; _dp[3]..
import java.util.*; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); Queue q = new LinkedList(); int n = sc.nextInt(); int k = sc.nextInt(); for (int i = 1 ; i
자료구조 중 스택에 관해 배웠습니다 대표적인 문제로 괄호문제 파이프 문제 에디터 문제를 풀었는데 핵심 아이디어는 다음과 같습니다 괄호문제의 경우 열리는 파이프 닫히는 파이프 갯수가 맞아야하는데 스택의 푸시팝으로 해결할수있습니다 푸시팝 끝냈을떄 스택에 남아있다면 열린 괄호가 더 많다는 소리고 푸시팝 끝내기 전에 스택이 비어있는 상태에서 팝한다면 닫힌 괄호가 더 많다는 소리입니다 하지만 이 문제는 스택 없이 그냥 카운트를 세서 카운트가 0인지 아닌지로도 파악할 수 있습니다 파이프 문제는 초딩 정올 문제였떤걸로 기억하는데 레이저를 쏴서 파이프가 몇개로 나누어지는지 알아맞추는 문제입니다 스택에 인덱스를 넣는데 푸시팝할때 인덱스 차이가 1이라면 () 이런 모양 즉 레이저라는 소리고 이때 팝을 해준담에 스택의 크기..
// 1000 번 import java.util.*; public class Main { // class이름은 Main으로 안하면 컴파일 에러!! public static void main(String[] args){ Scanner sc = new Scanner(System.in); int a, b; a = sc.nextInt(); b = sc.nextInt(); System.out.println(a + b); } } //2558 import java.util.*; public class Main { public static void main(String[] args){ Scanner sc = new Scanner(System.in); int a, b; a = sc.nextInt(); b = sc.nex..
내일은 재귀로 풀어야지!!!! #include #include #include #define MAX 32001 using namespace std; int n,m; vector vec[MAX]; int indegree[MAX]; queue q; int main(){ cin >> n >> m; for (int i = 0 ; i > j >> k; indegree[k]++; vec[j].push_back(k); } for (int i = 1; i
- boj 14501 (www.acmicpc.net/problem/14501) 솔루션은 i번째에서부터 마지막날까지 최대 수익을 구하는 것 결국 dp[0] 의 결과가 최댓값이 된다 이때 경우의수는 선택하는 경우와 선택하지 않는 경우 두가지 경우로 나뉠수있는데 선택하는 경우는 pay[i] + dp[day + i] 선택하지 않는 경우는 pay[i + 1] //다음날부터의 최댓값 이 된다 이녀석들중 max 값을 dp[i] 에 세팅해주면 되는 문제이다.. 핵심은 뒤에서부터 생각하기!!! 이 문제는 백준이가 최대한 돈을 많이 버는 문제다!!! 첫번째날부터 생각하게 된다면 일을 하는 경우, 안하는 경우로 나뉘게 되는데 그다음 둘째날에는 첫째날의 하는경우에서 둘째날 일을 하는 경우와 안하는 경우 첫째날의 안하는 경우에..
- boj 14916 (www.acmicpc.net/problem/14916) dp 입문용 문제 i원에서 2원짜리 동전을 선택하는 경우 최소갯수 dp[i - 2] + 1 5원짜리 동전을 선택하는 경우 dp[i - 5] + 1 2 5 첫번째 행은 얼마를 만들것인지 두번째 행은 최소 몇개의 동전이 필요한지 (999이상은 MAX로 취급 => MAX 보다 크면 -1 을 출력) 1 2 3 4 5 6 7 8 9 10 999 1 1000 2 1 3 2 4 3 2 6원을 만드는 경우 2원을 고르는 경우 => 이전에서 4원을 골랐던 경우 + 1가지 경우(2원 선택) // 2 + 1 = 3 5원을 고르는 경우 => 이전에서 1원을 골랐던 경우 + 1가지 경우(5원 선택) // 999 + 1 = 1000 7원을 만드는 경우..