본문 바로가기

알고리즘6

[Java DP] 프로그래머스 2 X n 타일링 Dynamic Programming의 대표적인 문제인 2XN 타일링 문제입니다. 문제 DP문제는 케이스를 나누는 것이 중요합니다. 케이스를 나눌 때는 문제를 다 풀기 직전의 상황부터 거꾸로 푸는 방법이 좋습니다. 바닥의 세로 길이는 2로 고정되어있고, 가로의 길이는 60,000이하의 자연수 입니다. 그러므로 문제를 풀 때는 변수로 주어지는 가로의 길이를 기준으로 진행하여야 합니다. 가로의 길이가 n일경우 n-1까지 타일이 꽉 차있다면 다음과 같은 경우가 있습니다. Case1. n-1 개의 타일까지 꽉 차있는 경우 채울 수 있는 가로의 길이가 1밖에 없으므로, 이 경우는 단 1개의 타일만 채울 수 있습니다. 가로의 길이가 n-2까지 꽉 차있다면 다음 케이스가 가능합니다. Case2. n-2개의 타일까지 꽉.. 2019. 9. 23.
[Java] 백준 1085번 : 직사각형에서 탈출 상당히 간단하게 풀 수 있는 기초문제였습니다. 정답률도 높은 문제네요 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int x = in.nextInt(); int y = in.nextInt(); int w = in.nextInt(); int h = in.nextInt(); System.out.println(Math.min(Math.min(w-x, x),Math.min(h-y, y))); } } 2019. 9. 5.
[Java] 백준 4948번 : 베르트랑 공준 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); while(true) { int M = in.nextInt(); int N = M * 2; if(M == 0) { break; } int[] nums = new int[(N+1)]; for(int i=2; i 2019. 9. 5.
[Java] 백준 1929번 : 소수 구하기 에라스토테네스의 체를 이용하시면 쉽게 풀 수 있습니다. 제가 푼 방식은 좀 오래걸리긴 하네요 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int M = in.nextInt(); int N = in.nextInt(); int[] nums = new int[(int) (N+1)]; for(int i=2; i 2019. 9. 5.
[Java] 백준 2581번 : 소수 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int M = in.nextInt(); int N = in.nextInt(); int[] nums = new int[N+1]; for(int i=2; i 2019. 9. 5.
[Java] 백준 1978번 : 소수 찾기 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int N = in.nextInt(); int answer = 0; int[] nums = new int[N]; for (int i = 0; i < N; i++) { nums[i] = in.nextInt(); if(check(nums[i])) { answer++; } } System.out.println(answer); } static boolean check(int num) { boolean result = true; if(num < 2) { result = false; } for(i.. 2019. 9. 5.