티스토리 뷰

728x90
반응형

문제

 

그림과 같이 9×9 격자판에 쓰인 81개의 자연수 또는 0이 주어질 때,

이들 중 최댓값을 찾고 그 최댓값이 몇 행 몇 열에 위치한 수인지 구하는 프로그램을 작성하시오.
예를 들어, 다음과 같이 81개의 수가 주어지면 이들 중 최댓값은 90이고, 이 값은 5행 7열에 위치한다.

 

입력

 

첫째 줄부터 아홉 번째 줄까지 한 줄에 아홉 개씩 수가 주어진다. 

주어지는 수는 100보다 작은 자연수 또는 0이다.

 

출력

 

첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 위치한 행 번호와 열 번호를 빈칸을 사이에 두고 차례로 출력한다. 

최댓값이 두 개 이상인 경우 그 중 한 곳의 위치를 출력한다.

 

풀이

 

2차원 배열에 관련된 문제다.

 

하지만 크기가 정해진 데다 최대값 중 아무 위치나 출력하라고 했으니

 

가장 간단하게 첫 번째 위치를 출력하기로 한다.

 

해서 81개의 수를 1차원 리스트에 받아서 최댓값을 구한 뒤 리스트에서 해당 값의 인덱스를 찾고,

 

그 인덱스를 2차원 배열 상의 좌표로 매핑했다.

 

굳이 리스트로 받았지만 스트림을 쓸 것도 없어 아쉬웠다.

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class Prob2566 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        List<Integer> list = new ArrayList<>();

        for (int i = 0; i < 81; i++) {
            list.add(sc.nextInt());
        }

        int max = Collections.max(list);
        int idx = list.indexOf(max);

        System.out.println(max);
        System.out.println(idx / 9 + 1 + " " + (idx % 9 + 1));
    }
}
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/06   »
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
글 보관함