문제 2개
백준 1010번
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
StringBuilder output = new StringBuilder();
// 1. 테스트 갯수 입력
int testSize = in.nextInt();
// 2. dp 배열 요구사항에 맞게 크기 지정
long[][] dp = new long[31][31];
// 3. dp 배열의 값 할당
for (int i = 0; i < 31; i++) {
dp[i][0] = 1;
dp[i][i] = 1;
}
// 4. 조합 식 구현, 2C1 = 2이다.
for (int i = 2; i < 31; i++) {
for (int j = 1; j < 31; j++) {
dp[i][j] = dp[i - 1][j] + dp[i - 1][j - 1];
}
}
// 5. 서쪽 동쪽 입력, 입력된 정수의 해당하는 dp 배열 할당
for (int i = 0; i < testSize; i++) {
int west = in.nextInt();
int east = in.nextInt();
output.append(dp[east][west]).append("\n");
}
System.out.println(output.toString());
}
}
문제 9655번
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 1. 돌 갯수 입력
int stoneNumber = in.nextInt();
// 2. 요구사항에 맞게 배열 크기 할당 및 dp 배열 값 할당
// 상근이 이기는경우를 1, 창영이가 이기는 경우를 2로 지정
int[] dp = new int[1001];
dp[1] = 1;
dp[2] = 2;
dp[3] = 1;
// 3. 마지막 돌을 가져가는 사람 검증
for (int i = 4; i <= stoneNumber; i++) {
dp[i] = Math.min(dp[i - 3], dp[i - 1]) + 1;
}
if (dp[stoneNumber] % 2 == 0) {
System.out.println("CY");
}else{
System.out.println("SK");
}
}
}