본문 바로가기
Blog/Education

99클럽 코테 스터디 33일차 TIL + DP

by 코젼 2024. 4. 26.
728x90
반응형

- 오늘의 학습 키워드 : DP

백준

https://www.acmicpc.net/problem/2775

 

2775번: 부녀회장이 될테야

첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다

www.acmicpc.net

- 공부한 내용 본인의 언어로 정리하기

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {

  public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    int T = Integer.parseInt(br.readLine());

    while (T-- > 0) {
      int K = Integer.parseInt(br.readLine());
      int N = Integer.parseInt(br.readLine());

      int[][] dp = new int[K+1][N];

      // 초기값 세팅
      // 0층에 사는 사람 (0층 1호 = 1명)
      for (int i=0; i<N; i++) {
        dp[0][i] = i+1;
      }
      // 1호에 사는 사람은 1명
      for (int i=1; i<=K; i++) {
        dp[i][0] = 1;
      }

      for (int i=1; i<=K; i++) {
        for (int j=1; j<N; j++) {
          dp[i][j] = dp[i][j-1] + dp[i-1][j];
        }
      }
      System.out.println(dp[K][N-1]);
    }
  }
}

 


백준

https://www.acmicpc.net/problem/1463

 

1463번: 1로 만들기

첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다.

www.acmicpc.net

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

  public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    long N = Long.parseLong(br.readLine());
    System.out.println(dynamic(N, 0));
  }

  private static int dynamic(long N, int count) {
    // 1인 경우
    if (N < 2) return count;

    return Math.min(
        dynamic(N/2, (int) (count+1+(N%2))),
        dynamic(N/3, (int) (count+1+(N%3)))
    );
  }
}

99클럽 1기를 수강하면서 작성한 글입니다.

https://99club.oopy.io/

 

99클럽-1기 모집 중

현직 개발자와 함께하는 코테 스터디

99club.oopy.io

 

728x90
반응형

댓글