매일 Algorithm

신재원·2023년 8월 13일
0

Algorithm

목록 보기
179/243

문제 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");
        }
    }
}

0개의 댓글