백준 12871번
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class problem482 {
    public static void main(String[] args) throws IOException {
        BufferedReader br =
                new BufferedReader(new InputStreamReader(System.in));
        String str1 = br.readLine();
        String str2 = br.readLine();
        int str1Length = str1.length();
        int str2Length = str2.length();
		
        // 문자열 누적을 위한 StringBuilder
        StringBuilder temp1 = new StringBuilder(str1);
        StringBuilder temp2 = new StringBuilder(str2);
        if(str1Length != str2Length){
			// 최대 공약수만큼 반복
            int lcm = lcm(str1Length, str2Length);
            while(temp1.length() != lcm){
                temp1.append(str1);
            }
            while(temp2.length() != lcm){
                temp2.append(str2);
            }
        }
        if(temp1.toString().equals(temp2.toString())){
            System.out.println(1);
        }else{
            System.out.println(0);
        }
    }
    private static int gcd(int a, int b) {
        if (b == 0) return a;
        return gcd(b, a % b);
    }
    private static int lcm(int a, int b) {
        return a * b / gcd(a, b);
    }
}
백준 13301번
import java.util.Scanner;
public class problem483 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int size = in.nextInt();
        if (size == 1) {
            System.out.println(4);
        } else {
            long[] arr = new long[size];
            arr[0] = 1; // 초기값 설정
            arr[1] = 1; // 초기값 설정
            for (int i = 2; i < size; i++) {
                arr[i] = arr[i - 1] + arr[i - 2]; // 점화식
            }
            long result = (2 * arr[size - 1]) + 
            		(2 * (arr[size - 1] + arr[size - 2]));
            System.out.println(result);
        }
    }
}