[백준 문제 풀이] 2566번 최댓값

Junu Kim·2025년 7월 5일
0

[2566] 최댓값

난이도: ★☆☆☆☆ • solved on: 2025-07-05


문제 요약

  • 문제 유형: 2차원 배열, 구현
  • 요구사항: 9×9 크기의 2차원 배열이 주어질 때, 최댓값과 그 위치(행, 열, 1-based index)를 출력해야 한다.

사용 개념

  1. 자료구조

    • 2차원 배열(논리적으로 행/열 순회)
    • 1차원 배열(index)로 위치 저장
  2. 알고리즘/기법

    • 한 번의 입력 루프에서 최댓값 및 위치 동시 추적
  3. 핵심 키워드

    • 단일 패스, 최댓값 비교, 1-based index 변환

풀이 아이디어 및 코드

  1. 문제 분해
    • 입력을 한 줄씩 받아서 공백 단위로 분리, 각 값을 int로 변환
    • 각 숫자가 현재 최댓값보다 크면, 최댓값과 위치를 동시에 갱신
  2. 핵심 로직 흐름
    while (입력 줄 존재):
        for (각 숫자):
            if (현재 숫자 > max):
                max = 현재 숫자
                index = [행, 열]
    print max, index[0]+1, index[1]+1
    ``
  3. 예외 처리
    • 인덱스는 1부터 시작하므로, 마지막 출력 시 +1
    • 입력이 9줄이 아닐 때(EOF 등) 종료

import java.util.*;
import java.lang.*;
import java.io.*;

class Main {
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int max = 0;
        int[] index = new int[2];
        int cnt = 0;
        while(true){
            String s = br.readLine();
            if(s==null) {
                break;
            } else {
                String[] row = s.split(" ");
                for(int i=0;i<row.length;i++){
                    int num = Integer.parseInt(row[i]);
                    if(num>max){
                        max = num;
                        index[0] = cnt;
                        index[1] = i;
                    }
                }
            }
            cnt++;
        }
        index[0] += 1;
        index[1] += 1;
        System.out.println(max+"\n"+index[0]+" "+index[1]);

    }
}

시간·공간 복잡도

  • 시간 복잡도: O(N×M) (여기선 N=9, M=9)
  • 공간 복잡도: O(1) (최댓값과 위치만 저장)

어려웠던 점

  • 실제 출력하는 인덱스가 1부터 시작하는 인덱싱 방식이라서 처음에 오답이 나왔다.

배운 점 및 팁

  • 배열이나 표 문제가 나올 때 출력 인덱스 기준(0-based/1-based)을 반드시 문제에서 확인하고 반영해야 한다.
  • 2중 루프 또는 while+for 구조로 충분히 한 번만에 원하는 값을 구할 수 있다.
  • 처음에는 for문을 반복하여 모든 값에 대한 확인을 하지 않는 방법이 없을까 고민했지만, 현재 배열의 크기는 고정되어있고 많은 값을 저장하고 있지는 않다는 점이 오히려 for문이 가장 효율적인 대안이 되었다.

참고 및 링크


추가 연습 문제

  • 비슷한 유형 (GPT 추천) : [2563] 색종이, [2738] 행렬 덧셈

  • 확장 문제:

    • 더 큰 N×M 배열의 최댓값 위치 찾기
    • 여러 개의 최댓값이 있을 때 처리 방식 바꾸기
profile
생각이 현실이 될 수 있도록 노력하는 중입니다.

0개의 댓글