백준 2566 - 최댓값 [Rust]

[Bronze III] 최댓값 - 2566

Posted by Hebi on March 24, 2023

백준 알고리즘

[Bronze III] 최댓값 - 2566

문제 링크

성능 요약

메모리: 13148 KB, 시간: 4 ms

분류

구현

문제 설명

<그림 1>과 같이 9×9 격자판에 쓰여진 81개의 자연수 또는 0이 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 행 몇 열에 위치한 수인지 구하는 프로그램을 작성하시오.

예를 들어, 다음과 같이 81개의 수가 주어지면

1열 2열 3열 4열 5열 6열 7열 8열 9열
1행 3 23 85 34 17 74 25 52 65
2행 10 7 39 42 88 52 14 72 63
3행 87 42 18 78 53 45 18 84 53
4행 34 28 64 85 12 16 75 36 55
5행 21 77 45 35 28 75 90 76 1
6행 25 87 65 15 28 11 37 28 74
7행 65 27 75 41 7 89 78 64 39
8행 47 47 70 45 23 65 3 41 44
9행 87 13 82 38 31 12 29 29 80

이들 중 최댓값은 90이고, 이 값은 5행 7열에 위치한다.

입력

첫째 줄부터 아홉 번째 줄까지 한 줄에 아홉 개씩 수가 주어진다. 주어지는 수는 100보다 작은 자연수 또는 0이다.

출력

첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 위치한 행 번호와 열 번호를 빈칸을 사이에 두고 차례로 출력한다. 최댓값이 두 개 이상인 경우 그 중 한 곳의 위치를 출력한다.

Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
use std::io;


fn main() {
    let mut arr = [[0; 9]; 9];
    let mut max = 0;
    let mut idx_x = 0;
    let mut idx_y = 0;

    // 배열 입력 받기
    for i in 0..9 {
        let mut input_a = String::new();
        io::stdin().read_line(&mut input_a).unwrap();
        let v: Vec<usize> = input_a
            .split_whitespace()
            .map(|x| x.parse().unwrap())
            .collect();
        for j in 0..9 {
            arr[i][j] = v[j];
        }
    }

    // 최댓값과 그 위치 찾기
    for i in 0..9 {
        for j in 0..9 {
            if max < arr[i][j] {
                max = arr[i][j];
                idx_x = i;
                idx_y = j;
            }
        }
    }

    // 결과 출력
    println!("{}", max);
    println!("{} {}", idx_x+1, idx_y+1);
}