문제 n가지 종류의 동전이 있다. 각각의 동전이 나타내는 가치는 다르다. 이 동전을 적당히 사용해서, 그 가치의 합이 k원이 되도록 하고 싶다. 그 경우의 수를 구하시오. 각각의 동전은 몇 개라도 사용할 수 있다. 사용한 동전의 구성이 같은데, 순서만 다른 것은 같은 경우이다. 입력 첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다. 출력 첫째 줄에 경우의 수를 출력한다. 경우의 수는 231보다 작다. 풀이 더보기 package footdev._5주차; import java.io.*; import java.util.*; public class BOJ_동전_1 { ..
algorithm
문제 한국이 낳은 세계적인 락스타 락동호는 2007년 2월 1일 역대 최대 규모의 콘서트를 열었으며, 2007년 2월 11일에 자신의 음악세계를 세상에 알리고, 2007년 3월 4일에는 자신의 작곡 비법을 세계에 공개했다. 하지만, 그 후 락동호는 음악을 접고 체스에 입문하게 되었고, 그 결과 2007년 3월 31일 Heroes원정대에서는 체스 부분으로 참가하게 된다. 그 후 절대로 음악을 하지 않을 것 같았지만, 모두의 예상을 깨고, 2007년 4월 21일 월드 노래자랑으로 신이 내린 가창력으로 우승한 뒤 자취를 감추었다. 하지만 2008년 7월 13일 드디어 락동호가 컴백한다. 락동호는 지난 몇 달간 자신의 신보에 자신의 음악적 능력을 모두 담았고, 이제 몇몇 곡 중 최고의 곡만을 앨범에 담으려고 한..
문제 공학자 길동이는 외부의 침략으로부터 마을을 지킬 수 있는 부메랑 무기를 개발하는 공학자다. 길동이는 부메랑 제작을 위한 고급 나무 재료를 구했다. 이 나무 재료는 NxM크기의 직사각형 형태이며 나무 재료의 부위마다 그 강도가 조금씩 다르다. 예를 들어 나무 재료의 크기가 2x3일 때는 다음과 같이 총 6칸으로 구성된다. 길동이는 이처럼 넓은 사각형 형태의 나무 재료를 잘라서 여러 개의 부메랑을 만들고자 한다. 그리고 부메랑은 항상 3칸을 차지하는 ‘ㄱ’모양으로 만들어야 한다. 따라서 부메랑의 가능한 모양은 다음과 같이 총 4가지다. 이때 부메랑의 중심이 되는 칸은 강도의 영향을 2배로 받는다. 위 그림에서 노란색으로 칠한 부분이 ‘중심이 되는 칸’이다. 예를 들어 앞선 예시에서는 다음과 같이 2개의..
문제 한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. N > 1인 경우, 배열을 크기가 2N-1 × 2N-1로 4등분 한 후에 재귀적으로 순서대로 방문한다. 다음 예는 22 × 22 크기의 배열을 방문한 순서이다. N이 주어졌을 때, r행 c열을 몇 번째로 방문하는지 출력하는 프로그램을 작성하시오. 다음은 N=3일 때의 예이다. 입력 첫째 줄에 정수 N, r, c가 주어진다. 출력 r행 c열을 몇 번째로 방문했는지 출력한다. 제한 1 ≤ N ≤ 15 0 ≤ r, c < 2N 풀이 더보기 package baekjoon; import java.io.*; import java..
import java.io.*; import java.util.*; public class DivisionSquare { static BufferedReader br; static StringTokenizer st; static int N, M; static int[][] arr; static long[][] sum; static long ans = -1; public static void main(String[] args) throws IOException{ input(); solve(); System.out.println(ans); } public static void input() throws IOException { br = new BufferedReader(new InputStreamReader..
import java.io.*; import java.util.StringTokenizer; public class RemoteController { static BufferedReader br; static StringTokenizer st; static String N; static int cnt; static String[] buttons; static int ans = 0; public static void main(String[] args) throws IOException{ input(); solve(); System.out.println(ans); } public static void input() throws IOException { br = new BufferedReader(new Inp..
import java.io.*; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { static int N; static int ans = 0; static StringTokenizer st; public static void recur(int[] A, int depth, int n) { //종료조건 if(depth == N) { ans = Math.max(ans, calculate(A, n)); return; } //재귀호출 for(int i = depth; i < N; i++) { swap(A, i ,depth); recur(A, depth+1, n); swap(A, i, depth); } } p..
import java.io.*; import java.util.*; public class Main { static int N; static int S; static int ans = 0; static int[] arr; static StringTokenizer st; public static void backtracking(int idx, int sum) { if(idx == N) { if(sum == S) { ans++; } return; } backtracking(idx+1, sum); backtracking(idx+1, sum+arr[idx]); } public static void main(String[] args) throws IOException{ BufferedReader br = new ..
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Stack; import java.util.StringTokenizer; public class Main { static int N; static int M; static int[][] map; static ArrayList chickenMap; static ArrayList houseMap; static Stack selectedChicken; static int minDist; public static void dfs(int start, int cnt) { ..
import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.*; import java.util.StringTokenizer; import java.util.Arrays; public class Main{ static int A, M; static int[] Anums, Mnums; public static boolean binarySearch(int start, int end, int num) { while(start Anums[mid]) { start = mid + 1; } } return false; } public static void main(String[] args) throws IOException { Buff..