Algorithm
[BaekJoon] 백준 알고리즘 2775번 / 부녀회장이 될테야
bkuk
2023. 2. 24. 14:26
접근방법
- 해당 문제를 계차수열을 통해서 원수열의 일반항을 도출하려고 했으나, 해결되지 않았다.
- 따라서, 전체탐색으로 접근해야한다.
- 각 층의 호수를 보면 규칙이 보인다.
- 예를 들어, 5층 5호를 보면 ( 4층 5호 + 5층 4호 ) 의 합이다.
- 따라서 이 문제는 0층 1호 ~ 14호 까지 대입하고, 0층 정보를 통해서 값을 대입해야 한다.
- 우선 15, 15의 크기를 가지는 2차 배열을 하나 생성하자.
- 0층만 우선 대입하자. for문을 통해 i가 자동적으로 증가하니, 값을 대입할 수 있다.
- 각 층의 1호는 무조건 1이니, 조건문을 통해서 1을 넣고, 1 보다 크다면 바로 아래층, 같은 층의 전 호수를 더한 값을 대입하면 된다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Number2775 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader( new InputStreamReader(System.in) );
int T = Integer.parseInt( br.readLine() );
// 1. 2차 배열을 만든다.
int[][] array = new int[15][15];
// 2. 0층 대입
for( int i = 1; i <= 14; i++ ) {
array[0][i] = i;
}
int p = 0;
// 3. 1층 ~ 14층 대입
for( int j = 1; j <= 14; j++ ) {
for( int z = 1; z <= 14; z++ ) {
if( z == 1 ) {
array[j][z] = array[j - 1][z];
} else {
array[j][z] = array[j - 1][z] + array[j][z - 1];
}
}
}
for( int z = 1; z <= T; z++ ) {
int F = Integer.parseInt( br.readLine() );
int H = Integer.parseInt( br.readLine() );
System.out.println( array[F][ H ] );
}
}
}