#71. 백준 2566번 문제 풀이: 최댓값 | 문제 원본 보기 |
--입력-- 3 23 85 34 17 74 25 52 65 10 7 39 42 88 52 14 72 63 87 42 18 78 53 45 18 84 53 34 28 64 85 12 16 75 36 55 21 77 45 35 28 75 90 76 1 25 87 65 15 28 11 37 28 74 65 27 75 41 7 89 78 64 39 47 47 70 45 23 65 3 41 44 87 13 82 38 31 12 29 29 80 --출력-- 90 5 7
2차원 배열에 대해 이해하고 있다면 쉽게 풀수 있는 문제이다. 1. 주어진 값들을 9행 9열씩 받아서 배열에 넣는다. 2. 이중 루프(루프 9번안에서 루프 9번)를 돌려서 배열값들을 중에 최대값을 비교해 가며, 최댓값과 위치값(행,열)을 저장해 둔다. 3. 루프가 끝나면 최댓값과 위치를 출력한다.
#include <stdio.h>
int main() {
int i, j;
int max_v = 0, max_i = 0, max_j = 0; //최댓값, 위치 변수
int S[9][9]; // 격자판 숫자를 저장할 배열
for(i = 0; i < 9; i++) // 9 행을 반복
for(j = 0; j < 9; j++) // 9 열을 반복
scanf("%d", &S[i][j]); // 숫자를 받아 배열에 저장
for(i = 0; i < 9; i++) { // 9 행을 반복
for(j = 0; j < 9; j++) { // 9 열을 반복
if(S[i][j] > max_v) { // 현재값이 최댓값보다 크면..
max_v = S[i][j]; // 최대값 저장
max_i = i; max_j = j; // 위치를 저장
}
}
}
printf("%d\n%d %d", max_v, max_i + 1, max_j + 1);
// 최댓값과 위치를 출력
// 배열 인덱스는 0부터, 격자 판은 1부터 이므로 인덱스+1 을 해줌.
return 0;
}