2020-12-15
문제
회의가 끝났고, 이제 악수를 하는 시간이다. 모든 사람은 직사각형 탁자 하나의 한 면에 앉아있다.
자리를 벗어나지 않고 악수를 하는 방법의 수는 총 몇 가지일까?
각 사람들은 자신의 왼쪽이나 오른쪽에 있는 사람들과 악수를 할 수 있다. (안 할 수도 있다)
입력
첫째 줄에 회의에 참석한 사람의 수 n (1 ≤ n ≤ 10,000,000)이 주어진다.
출력
첫째 줄에 악수를 하는 방법의 수를 출력한다. 수가 매우 커질 수 있기 때문에, 마지막 자리만 출력한다.
n=4인 경우에는 5가지 방법이 있다.
import java.util.Scanner;
public class TemplateA {
public static void main(String[] args) {
//피보나치 수열 문제이다.
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int a = 1;
int b = 1;
int sum = 2;
if(n <= 1) {
System.out.println(1);
//주어진 사람이 1보다 작거나 같으면.
//가능한 악수수는 1이다.
}else {
for(int i = 3; i <= n; i++) {
a = b;
b = sum;
sum = a + b;
//2이상일 경우 피보나치로 구현해주면된다.
}
sum %= 10;
//수가 매우 커지면 끝자리만 출력한다고 했으니
//합에 10으로 나눈 나머지를 넣어주면 된다.
System.out.println(Math.abs(sum));
}
}
}
출처링크: www.acmicpc.net/problem/8394