白駿Baekjoon 2566回最安値-JAVA


https://www.acmicpc.net/problem/2566
質問する
図1に示すように、9×9グリッドに書かれた81個の自然数または0が与えられた場合、プログラムを作成してその中の最値を見つけ、最値が何行かの列にある数を求めます.
たとえば、81の数字がある場合は、次のようになります.
1列2列3列4列5列6列7列8列9列
1行3 23 85 34 17 74 25 5265
2行107394288852147263
3行8742 18 78 53 45 18 8453
4行342864851216753655
5行217745352287590761
6行25876515281372727272574
7行65277541789786439
8行4770 45 23 65 3 41 44
9行87,138,2383,112,2980
このうち最高価格は90で、この価格は5行7列目にあります.
入力
1行目から9行目まで、1行に9つの数字があります.与えられた数は100未満の自然数または0です.
しゅつりょく
1行目は最値を出力し、2行目は最値がある行番号と列番号を出力し、スペースを隔てて順次出力します.最大値が2つを超えると、どちらかの位置が出力されます.
入力例1
3 23 85 34 17 74 25 52 65
10 7 39 42 88 52 14 72 63
87 42 18 78 53 45 18 84 53
34 28 64 85 12 16 75 36 55
21 77 45 35 28 75 90 76 1
25 87 65 15 28 11 37 28 74
65 27 75 41 7 89 78 64 39
47 47 70 45 23 65 3 41 44
87 13 82 38 31 12 29 29 80
サンプル出力1
90
5 7
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));

		int[][] arr = new int[9][9];

		for (int i = 0; i < 9; i++) {
			String[] strArr = br.readLine().split(" ");
			for (int j = 0; j < strArr.length; j++) {
				arr[i][j] = Integer.parseInt(strArr[j]);
			}
		}

		int num = 0;
		int rowOrder = 0;
		int columnOrder = 0;
		for (int i = 0; i < 9; i++) {
			for (int j = 0; j < 9; j++) {
				if (num < arr[i][j]) {
					num = arr[i][j];
					rowOrder = i;
					columnOrder = j;
				}
			}
		}

		System.out.println(num);
		System.out.println((rowOrder + 1) + " " + (columnOrder + 1));
	}
}
  • 説明
  • の2 Dアレイ
  • を使用