<알고리즘 문제풀이&연습>/[C++] 백준

[백준 2566] 최댓값

사용자 BlockDMask 2017. 10. 17. 17:45
반응형
  • 안녕하세요. BlockDMask 입니다.

  • 중간고사가 곧 시작하는군요.. 그래도 오늘도 문제 달립니다.

  • 170905 문제 빼먹음 -> 171017 완료.

0. 제목


백준 2566 최댓값

BOJ 2566 최댓값


1. 문제 설명


아래 그림과 같이 9x9 격자판에 쓰여진 81개의 자연수가 주어질 때, 


이들 중 최댓값을 찾고 그 최댓값이 몇 행 몇 열에 위치한 수인지를 출력하는 프로그램을 작성하시오.



그림과 같이 최대 81개의 수가 주어질때, 


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


-- 입력 : 첫째 줄부터 아홉 번째 줄까지 한 줄에 아홉 개씩 자연수가 주어진다. 

주어지는 자연수는 100 보다 작다.


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


2. 풀이 과정


-> 9x9이므로 쉽게 받기위해 이중 반복문을 이용하여 받습니다.


-> 최대값과 좌표만 알면 되므로, 따로 2차원 배열에 저장할 필요가 없습니다.


-> 숫자를 받으면서 비교하여 최대값을 구하고 그때의 좌표를 저장했다가 출력하면됩니다.


3. 소스코드


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
38
//https://www.acmicpc.net/problem/2566
//BOJ_2566_최댓값
 
#include<iostream>
#define N 9
using namespace std;
 
int y, x;       //max일때 y, x;
int result;      //max 값
 
void Solution(){
    int tmp;
    for(int i=0; i<N; i++){
        for(int j=0; j<N; j++){
            cin >> tmp;
 
            if(tmp > result){  //바로 비교
                y = i;
                x = j;
                result = tmp;
            }
        }
    }
 
}
 
void Output(){
    cout << result << endl;
    cout << y+1 << " " << x+1;  //배열의 index와 실제 위치 차이
}
 
int main(void){
 
    Solution();
    Output();
 
    return 0;
}
cs


4. 인증



문제 출처 - https://www.acmicpc.net/problem/2566

감사합니다.


반응형