본문 바로가기

알고리즘(Java)

(22)
백준 11050 이항 계수 1 문제 자연수 N 과 정수 K 가 주어졌을 때 이항 계수 (NK) 를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N 과 K 가 주어진다. (1 ≤ N ≤ 10, 0 ≤ K ≤ N ) 출력 (NK) 를 출력한다. 예제 입력복사 5 2 예제 출력복사 10 힌트 출처 문제를 만든 사람: baekjoon 이항계수 구하기는 재귀 프로그래밍의 기초이다. 이항계수란 n개의 원소에서 r개의 원소를 뽑아내는 방법의 수를 나타낸다. 즉, nCr과 같이 수학에서 조합을 뜻한다. 이항계수 프로그래밍의 해법은 nCr = n-1Cr-1 + n-1Cr의 공식으로 이루어진다. 무슨 의미냐면 n개의 원소 중 r개의 원소를 뽑아내는 경우의 수는 맨 마지막 원소 n을 제외한 n-1개의 원소 중 r-1개를 뽑아내는 경우의 수 + n-1개..
백준 1003번 피보나치 함수 문제 다음 소스는 N번째 피보나치 함수를 구하는 함수이다. 1 2 3 4 5 6 7 8 9 10 11 int fibonacci(int n) { if (n==0) { printf("0"); return 0; } else if (n==1) { printf("1"); return 1; } else { return fibonacci(n‐1) + fibonacci(n‐2); } } fibonacci(3)을 호출하면 다음과 같은 일이 일어난다. fibonacci(3)은 fibonacci(2)와 fibonacci(1) (첫 번째 호출)을 호출한다. fibonacci(2)는 fibonacci(1) (두 번째 호출)과 fibonacci(0)을 호출한다. 두 번째 호출한 fibonacci(1)은 1을 출력하고 1을 리턴한..
백준 2749 피보나치 수 3(피사노의 주기) 문제 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n>=2)가 된다. n=17일때 까지 피보나치 수를 써보면 다음과 같다. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597 n이 주어졌을 때, n번째 피보나치 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 n이 주어진다. n은 1,000,000,000,000,000,000보다 작거나 같은 자연수이다. 출력 첫째 줄에 n번째 피보나치 수를 1,000,000으로 나눈 나머지를 출력한다. 예제 입력복사 1000 예제..
백준 2748번 피보나치수 2 문제 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n>=2)가 된다. n=17일때 까지 피보나치 수를 써보면 다음과 같다. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597 n이 주어졌을 때, n번째 피보나치 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 n이 주어진다. n은 90보다 작거나 같은 자연수이다. 출력 첫째 줄에 n번째 피보나치 수를 출력한다. 예제 입력복사 10 예제 출력복사 55 import java.util.Scanner; public cla..
백준 2747번 피보나치 수 문제 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n>=2)가 된다. n=17일때 까지 피보나치 수를 써보면 다음과 같다. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597 n이 주어졌을 때, n번째 피보나치 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 n이 주어진다. n은 45보다 작거나 같은 자연수이다. 출력 첫째 줄에 n번째 피보나치 수를 출력한다. 예제 입력복사 10 예제 출력복사 55 단순한 반복문 이용: import java.util.Scanner..
백준 1021번 회전하는 큐 문제 지민이는 N개의 원소를 포함하고 있는 양방향 순환 큐를 가지고 있다. 지민이는 이 큐에서 몇 개의 원소를 뽑아내려고 한다. 지민이는 이 큐에서 다음과 같은 3가지 연산을 수행할 수 있다. 첫번째 원소를 뽑아낸다. 이 연산을 수행하면, 원래 큐의 원소가 a1, ..., ak이었던 것이 a2, ..., ak와 같이 된다. 왼쪽으로 한 칸 이동시킨다. 이 연산을 수행하면, a1, ..., ak가 a2, ..., ak, a1이 된다. 오른쪽으로 한 칸 이동시킨다. 이 연산을 수행하면, a1, ..., ak가 ak, a1, ..., ak-1이 된다. 큐에 처음에 포함되어 있던 수 N이 주어진다. 그리고 지민이가 뽑아내려고 하는 원소의 위치가 주어진다. (이 위치는 가장 처음 큐에서의 위치이다.) 이 때, 그..
백준 10866 덱 import java.util.Scanner; public class Main { public static void main(String[] args) throws Exception { Scanner sc = new Scanner(System.in); int commandCt = Integer.parseInt(sc.nextLine()); String commandLine = null; ArrayDeck deck = new ArrayDeck(commandCt); for(int i = 1; i 0;i--){ deck[i]=deck[i-1]; } deck[0] = value; } public void push_back(int value){ rear++; deck[rear] = value; } public in..
백준 1158 조세퍼스 문제 0 문제 조세퍼스 문제는 다음과 같다. 1번부터 N번까지 N명의 사람이 원을 이루면서 앉아있고, 양의 정수 M(≤ N)이 주어진다. 이제 순서대로 M번째 사람을 제거한다. 한 사람이 제거되면 남은 사람들로 이루어진 원을 따라 이 과정을 계속해 나간다. 이 과정은 N명의 사람이 모두 제거될 때까지 계속된다. 원에서 사람들이 제거되는 순서를 (N, M)-조세퍼스 순열이라고 한다. 예를 들어 (7, 3)-조세퍼스 순열은 이다. N과 M이 주어지면 (N,M)-조세퍼스 순열을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 M이 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ M ≤ N ≤ 1,000) 출력 예제와 같이 조세퍼스 순열을 출력한다. 예제 입력복사 7 3 예제 출력복사 힌트 출처 문제를 만든 사람:..