문제 2개
백준 1747번
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 1. 숫자 N 입력
int number = in.nextInt();
while (true) {
// 2. 소수이면서 펠론드롬 숫자일 경우 break
if (isPrime(number) && isPalindrome(number)) break;
number++;
}
System.out.println(number);
}
private static boolean isPrime(int number) {
if (number < 2) {
return false;
} else {
for (int i = 2; i <= Math.sqrt(number); i++) {
if (number % i == 0) {
return false;
}
}
}
return true;
}
private static boolean isPalindrome(int number) {
String numStr = String.valueOf(number);
// 투포인터로 펠린도름인지 접근
int start = 0;
int end = numStr.length() - 1;
while (start < end) {
if (numStr.charAt(start) != numStr.charAt(end)) {
return false;
}
start++;
end--;
}
return true;
}
}
백준 2748번
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 1. 정수 n 입력
int number = in.nextInt();
System.out.println(fibo(number));
}
private static long fibo(int number) {
// 2. 요구사항의 배열 크기 지정
long[] dp = new long[91];
// 3. dp 배열의 값 할당
dp[0] = 0;
dp[1] = 1;
dp[2] = 1;
for (int i = 2; i <= number; i++) {
dp[i] = dp[i - 1] + dp[i - 2];
}
return dp[number];
}
}