백준 BaekJoon 8394번: 악수 [Java] 자바

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

 

8394번: 악수

첫째 줄에 회의에 참석한 사람의 수 n (1 ≤ n ≤ 10,000,000)이 주어진다.

www.acmicpc.net