목록Data Structure & Algorithm/PS - JAVA (270)
Dev.baelanche
n 의 길이에 따라 만들 수 있는 이진수열의 수를 구해보면 피보나치 수열과 같다. 1. 동적계획법을 이용하여 배열을 채운다. 2. (A+B)%M = (A%M+B%M)%M 을 이용한다. public static int f(int n) { if(n == 0) {dp[0] = 0; return 0;} if(n == 1) {dp[1] = 1; return 1;} if(n == 2) {dp[2] = 2; return 2;} if(dp[n] != -1) return dp[n]; int result = f(n-2)%15746 + f(n-1)%15746; dp[n] = result; return result; } public static void main(String[] args) { Scanner sc = new S..
n자리 이친수의 개수를 세어보면 피보나치 수열이란 것을 알 수 있다. 1. n의 범위가 90 까지이므로 자료형을 long 으로 선언해야 한다. public static long pinary(int n) { if(n == 0) {dp[0] = 0; return 0;} if(n == 1) {dp[1] = 1; return 1;} if(dp[n] != -1) return dp[n]; long result = pinary(n-2) + pinary(n-1); dp[n] = result; return result; } public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); dp = new lo..
나누기를 이용한 규칙으로 풀려다가 이 시간에 dp 문제 푸는게 나을 것 같아서 그냥 막 풀었다. public static void main(String[] args) { Scanner sc = new Scanner(System.in); String num = sc.next(); int length = num.length(); int sum = 0; if(length == 2) sum = num.charAt(0) + num.charAt(1) - 96; else if(length == 3) { if(num.charAt(1) == '0') sum = num.charAt(2) - 38; else sum = num.charAt(0) - 38; } else sum = 20; sc.close(); System.out..
배열의 각 인덱스 값이 모두 같을때는 값을 그대로 출력하고 하나라도 다를 경우에 "?" 를 출력하면 된다. public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); char arr[][] = new char[n][100]; for(int i=0; i
문제에는 배열 B를 재배열 하지말라고 언급했는데 재배열 하지 않고 풀 줄 모르겠어서 재배열했다... 배열 A, B 를 각각 오름차순, 내림차순으로 정렬하여 곱하면 최소값이 나온다. public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int a[] = new int[n]; int b[] = new int[n]; for(int i=0; i
등차수열 공식을 이용했다. 따라서 x는 이다. N, t, l 모두 주어지므로 수열의 처음시작인 X 를 구하여 x, x+1, x+2, ..., x+l-1 를 출력하면 된다. public static int sequenceSum(int n) { n = n*(n+1)/2; return n; } public static int compareSum(int x, int l) { int sum = 0; for(int i=0; i
피보나치수열을 계산하는 함수 f(n) 을 수행했을때 호출되는 f(0), f(1) 의 개수를 정리한 표이다. n f(0) f(1) 2 1 1 3 1 2 4 2 3 5 3 5 6 5 8 7 8 13 8 13 21 n=0, n=1 일때는 규칙성이 없어서 제외했다. 위 표대로 입력이 n 일때 f(n-1), f(n)을 출력해주면 된다. public static final int MAX = 41; public static int dp[] = new int[MAX]; public static int fibonacci(int n) { if(n==0) {dp[0] = 0; return 0;} if(n==1) {dp[1] = 1; return 1;} if(dp[n] != -1) return dp[n]; int result..
주어진 n*m의 배열에서 8*8 범위를 한칸씩 움직이면서 모두 검사한다. 1. BWBW... 순으로 진행하는 체스판을 90도 회전시키면 WBWB... 가 되므로 64 - 칠한 개수와 칠한 개수 중 작은 값을 최소값으로 사용한다. public static void main(String[] args){ Scanner sc = new Scanner(System.in); int m = sc.nextInt(); int n = sc.nextInt(); char[][] chess = new char[m][n]; int min = 64; for(int i=0; i