๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm

[Codeforces] 509A: Maximum in Table

by ์ฃผ๋ฐœ2 2020. 3. 5.
๋ฐ˜์‘ํ˜•

https://codeforces.com/problemset/problem/509/A

 

Problem - 509A - Codeforces

 

codeforces.com

์ฝ”๋“œ

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int n = scan.nextInt();
		int[][] arr = new int[n][n];
		if(n == 1) {
			System.out.println(1);
			return;
		}
			// 1ํ–‰์˜ ๊ฐ’๋“ค์€ 1 ... 0,0 ~ 0,n = 1
			for(int i=0; i<1; i++)
				for(int j=0; j<n; j++)
					arr[i][j] = 1;
			
			// iํ–‰์˜ ์ฒซ๋ฒˆ์งธ ์—ด์€ ๋ชจ๋‘ 1 ... (0,0) , (1,0) ~ (n,0) = 1
			for(int i=0; i<n; i++)
				for(int j=0; j<1; j++)
					arr[i][j] = 1;
			
			// ์œ„์—์„œ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ํ–‰์€ ๊ทœ์น™์— ๋”ฐ๋ผ ์ €์žฅ
			for(int i=1; i<n; i++) 
				for(int j=1; j<n; j++)
					arr[i][j] = arr[i-1][j] + arr[i][j-1];
		
		// ํ•ญ์ƒ ๋งˆ์ง€๋ง‰ ๊ฐ’์ด ์ ค ํผ
		System.out.println(arr[n-1][n-1]);
		scan.close();
	}

}

ํ’€์ด

๋ฌธ์ œ์—์„œ ์ฃผ์–ด์ง„ ์กฐ๊ฑด์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค

์ฒซ๋ฒˆ์งธ ํ–‰๊ณผ ์ฒซ๋ฒˆ์งธ ์—ด๋“ค์€ 1์ด๋‹ค.

๊ทธ ์™ธ์˜ ํ–‰์—ด๋“ค์€ ๋‹ค์Œ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•œ๋‹ค. arr[i][j] = arr[i-1][j] + arr[i][j-1]

 

๋”ฐ๋ผ์„œ ์œ„ ์กฐ๊ฑด์„ ๊ทธ๋Œ€๋กœ ์ฒซ๋ฒˆ์งธ ํ–‰๋“ค์„ 1๋กœ ์„ค์ •ํ•œ๋‹ค.

			for(int i=0; i<1; i++)
				for(int j=0; j<n; j++)
					arr[i][j] = 1;

 

๊ทธ ํ›„ ๋ชจ๋“  ํ–‰์˜ ์ฒซ๋ฒˆ์งธ ์—ด๋“ค์„ 1๋กœ ์„ค์ •ํ•œ๋‹ค.

			for(int i=0; i<n; i++)
				for(int j=0; j<1; j++)
					arr[i][j] = 1;

 

๋‚˜๋จธ์ง€ ํ–‰, ์—ด๋“ค์€ ๊ทœ์น™์— ๋”ฐ๋ผ ์„ค์ •ํ•œ๋‹ค.

			for(int i=1; i<n; i++) 
				for(int j=1; j<n; j++)
					arr[i][j] = arr[i-1][j] + arr[i][j-1];

 

๊ฐ€์žฅ ํฐ ๊ฐ’์€ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค์˜ ๊ฐ’์ด๋ฏ€๋กœ arr[n-1][n-1] ์„ ์ถœ๋ ฅํ•œ๋‹ค.

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€