[백준] 2775번: 부녀회장이 될테야 (Java)

seri·2024년 7월 11일
0

코딩테스트 챌린지

목록 보기
18/62

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

📌 문제 탐색하기

입력 : 첫째 줄 - 테스트케이스 T
두번째 줄 - k
세번째 줄 - n (1 ≤ k, n ≤ 14)
테스트케이스만큼 두,세번째 줄 반복
출력 : 테스트케이스에 대한 해당 집의 거주민의 수

가능한 시간복잡도

O(1)

알고리즘 선택

DP

📌 코드 설계하기

  1. 테스트 케이스를 입력받고, apt[][] 배열을 생성한다.
  2. apt[][] 배열에 0층부터 나머지 층의 사람 수를 세팅한다.
  3. 테스트 케이스만큼 k, n을 입력받는다.
  4. 테스트 케이스만큼 해당 집의 거주민의 수를 출력한다.

📌 시도 회차 수정 사항 (Optional)

💡 시도별 수정 사항은 어떻게 작성하나요?
- 무문별하게 “맞았습니다”가 나올때 까지 수정하는 형태의 문제 풀이를 반복하면 , 내가 어떤 실수를 해서 해당 문제를 틀렸는지 모르게 됩니다.
- 틀렸습니다를 받았다면 왜 틀렸는지 고민해보고 , 어떻게 수정할 수 있는지 고민하는 과정을 작성해주시면 됩니다.
- 위에 내가 세울 설계에서 어떤 부분이 틀렸는지도 함께 점검해보세요
- 한번에 맞출수도 있기 때문에 이 칸은 Optional입니다.

1회차

2회차

📌 정답 코드

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int T = sc.nextInt();
        int[][] apt = new int[15][15];
        
        //0층 세팅
        for (int i=0; i<15; i++) {
            apt[0][i]= i;
        }
        
        //나머지 층 세팅
        for (int i=1; i<15; i++) {
            for (int j=1; j<15; j++) {
                apt[i][j] = apt[i][j-1] + apt[i-1][j];
                //같은 층 이전 호수 + 한층 아래 같은 호수
            }
        }
        
        for (int i=0; i<T; i++) {
            int k = sc.nextInt();
            int n = sc.nextInt();
            System.out.println(apt[k][n]);
        }
    }
}
profile
꾸준히 정진하며 나아가기

0개의 댓글