더 많이 실패하기

공부 105일차: 백준 2566번 최댓값 자바 java 본문

알고리즘/백준

공부 105일차: 백준 2566번 최댓값 자바 java

김발자~ 2022. 11. 12. 14:31
반응형

2566 최댓값

https://www.acmicpc.net/problem/2566

 

2566번: 최댓값

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

www.acmicpc.net

 

 

 


백준 단계별로 풀어보기 9단계 2차원 배열 (2) 2566번 문제 최댓값


문제


 

 

 

 


과정 생각해보기


 

2차원 배열 문제긴 하지만 굳이 배열을 선언하지 않더라도 풀 수 있는 문제다

입력되는 숫자들을 다 배열에 넣지 않고 비교하면서 최댓값이면 남겨두는 방식을 사용하면 되기 때문이다

다만 행과 열을 출력해야 하므로 0부터 <9까지 도는 이중 반복문을 사용해야 한다

행과 열은 1부터 시작하므로 출력할 때 +1을 해준다

(1부터 <10까지 도는 것도 가능하겠지만 반복문은 0부터 시작하는 게 관념)

 

정리하자면,

1. 이중 반복문 안에서 숫자를 입력받는다

2. 입력값이 이전에 입력된 값보다 크다면 최댓값 max를 갱신한다

3. 이때 i와 j도 저장해둔다

3. 9*9 81개의 숫자를 모두 확인했다면 i와 j에 각각 1을 더한 뒤 출력한다

 

 

 


정답 인정 코드


 

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
import java.util.Scanner;
 
public class Main {
 
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        // 배열에 넣을 필요 없이 처음부터 끝까지 크기 비교
        int max = 0;
        int row = 0;
        int col = 0;
        for(int i = 0; i < 9; i++) {    // 행
            for(int j = 0; j < 9; j++) {    //열
                int n = sc.nextInt();
                if(max < n) {
                    max = n;
                    
                    row = i;
                    col = j;
                }
            }
        }
        // i, j는 0부터 시작하므로 행과 열에 +1        
        System.out.print(max + "\n" + (row+1+ " " + (col+1));
    }
 
}
 
cs

 

 

 


 

반응형
Comments