デジタルカードゲーム


複数のデジタルカードの中から一番高いカードを1枚選び、行ごとに一番低いカードを選び、最終的に一番高いカードを選びます.
カードの数を2次元配列で与え,nとmが100未満であることを実現し,2ループで最切り上げを検索してリストに保存し,次いで最値を出力した.2次元配列の自然数があったので,もちろん2次元配列の解を試みたが,必ずしも2次元配列で解く必要がないとは限らないことに驚きました.
最初の解

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.StringTokenizer;

public class 숫자카드게임 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        ArrayList<Integer> list = new ArrayList<>();
        int n = Integer.parseInt(st.nextToken()); // 행
        int m = Integer.parseInt(st.nextToken()); // 열
        int[][] cardArr = new int[n][m];
        for (int i = 0; i < n; i++) {
            st = new StringTokenizer(br.readLine());
            for (int j = 0; j < m; j++) {
                cardArr[i][j] = Integer.parseInt(st.nextToken());
                int minNum = cardArr[i][0];
                if (cardArr[i][j] < minNum) { // 각 행에서 최솟값 찾아서
                    minNum = cardArr[i][j];
                    list.add(minNum); // 리스트에 저장
                }
            }
        }
        Collections.sort(list);
        System.out.println(list.get(list.size() - 1)); // 찾은 최솟값 중 최댓값 출력
    }
}
2番目の解

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class 숫자카드게임 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int n = Integer.parseInt(st.nextToken()); // 행
        int m = Integer.parseInt(st.nextToken()); // 열
        int result = 0;
        for (int i = 0; i < n; i++) {
            st = new StringTokenizer(br.readLine());
            int minNum = 10001;
            for (int j = 0; j < m; j++) {
                int cardNum = Integer.parseInt(st.nextToken());
                minNum = Math.min(minNum, cardNum); // 현재 줄에서 가장 작은 수 찾기
            }
            result = Math.max(result, minNum); // 작은 수 중에서 큰 수 찾기
        }
        System.out.println(result);
    }
}
行の個数に応じて数字を入力し、列の個数に応じてmin()メソッドを使用して最大値を更新し、行の個数に応じて繰り返しresult変数に最値を格納します.
一つの問題に対していろいろな解答があるのを見て、私はいつも感心します.問題を解決する前に熟考する習慣を身につけなければならない.