https://www.acmicpc.net/problem/2775
2775번: 부녀회장이 될테야
첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다
www.acmicpc.net
주의점
- 가장 첫 줄 : 테스트 케이스
- 테스트 케이스 다음 줄부터 두 줄씩 묶어 k 와 n 이 주어짐
- 아파트 : 0층부터 시작, 각 층은 1호부터 시작
알고리즘
- k 층 n 호 = (k-1) 층 1 호 + (k-1) 층 2 호 + ... + (k-1) 층 n 호
입력 조건
첫 번째 줄에 Test case의 수 T가 주어진다.
그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다.
(1 <= k <= 14, 1 <= n <= 14)
➡ 테스트 케이스 수만큼 배열 반복 생성하기보단, 입력의 최대값만큼 배열의 사이즈 한 번에 생성하기
순서
- 2차원 배열 생성
- (1~14층까지) + (각 층의 2호에서 14호까지) 반복해서 값 생성
풀이
1. Scanner
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
//아파트 생성
int[][] APT = new int[15][15];
for(int i = 0; i < 15; i++) {
APT[i][1] = 1; //i층 1호
APT[0][i] = i; //0층 i호
}
for(int i = 1; i < 15; i ++) { //1 ~ 14층
for(int j = 2; j < 15; j++) { //2 ~ 14호
//i 층 (j-1) 호 + (i-1) 층 j 호
APT[i][j] = APT[i][j - 1] + APT[i - 1][j];
}
}
//테스트 케이스
int T = in.nextInt();
for(int i = 0; i < T; i++) {
int k = in.nextInt();
int n = in.nextInt();
System.out.println(APT[k][n]);
}
}
}
2. BufferedReader
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
public static int[][] APT = new int[15][15];
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
makeApt(); //아파트 만들기
int T = Integer.parseInt(br.readLine()); //테스트 케이스
for (int i = 0; i < T; i++) {
int k = Integer.parseInt(br.readLine()); //자료형 타입 유의
int n = Integer.parseInt(br.readLine());
sb.append(APT[k][n]).append('\n');
}
System.out.println(sb);
}
public static void makeApt() {
// 아파트 생성
for (int i = 0; i < 15; i++) {
APT[i][1] = 1; //i층 1호
APT[0][i] = i; //0층 i호
}
for (int i = 1; i < 15; i++) { //1 ~ 14층
for (int j = 2; j < 15; j++) { //2 ~ 14호
//i 층 (j-1) 호 + (i-1) 층 j 호
APT[i][j] = APT[i][j - 1] + APT[i - 1][j];
}
}
}
}
성능
- BufferedReader > Scanner
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준] 10757번 : 큰 수 A + B - Java (0) | 2022.03.26 |
---|---|
[백준] 2839번 : 설탕 배달 - Java (0) | 2022.03.26 |
[백준] 10250번 : ACM 호텔 -Java (0) | 2022.03.24 |
[백준] 2869번 : 달팽이는 올라가고 싶다 - Java (0) | 2022.03.24 |
[백준] 1193번 : 분수찾기 - Java (0) | 2022.03.23 |
댓글