본문 바로가기
카테고리 없음

N x N배열의 각 행과 열의 합중 가장 큰 값의 행열 번호 찾기

by Hyper하이퍼 2022. 12. 24.
반응형

<아이디어>

# 최대 값을 찾기 위해서는 최소값을 넣어놓고, 그 값보다 큰 값이 들어오면 값을 업데이트해나가는 방법이 효과적이다.

 

1. 변수 max에 제일 작은 값 넣어두기

    - int max = 0; 최대값 max라는 변수에 제일 작은 값을 넣어준다.

2. 2중 for 문으로 배열을 탐색하면서 max 값보다 큰 값이 있으면 값을 업데이트 해준다.

 

3. 행과 열의 번호를 찾는 것이기 때문에,  max_r, max_c라는 변수를 B배열의 인덱스로 활용한다는게 중요하다.

반응형
#include<stdio.h>
int A[5][5]

void input(void)
{
	int i, j;
	scanf("%d", &N);

	for (i = 0; i < 5; i++)
	{
		for (j = 0; j < 5; j++)
		{
			scanf("%d", &A[i][j]);
		}
	}
}


void main(void)
{
    input();
    int max_r = 0; // 인덱스 번호로 활용
    int max_c = 0; // 인덱스 번호로 활용
    int r, c;
    int sum_r[5];
    int sum_c[5];
    
    // 각 행의 합과 열의 합을 B 배열에 담기
    
    for( i = 0; i < 5; i++)
    {
        for(j = 0; j < 5; j++)
            {
                sum_r[i] += A[i][j];
                sum_c[j] += B[i][j]; // i값이 1로 갱신 되는 순간부터 열의 합이 구해진다.
            }
    }
    
    for(r = 1; r< 5; r++)
    {
        for(c = 1; c < 5; c++)
        {
            if(sum_r[max_r] < sum_r[r]) max_r = r; // B[max_r]번째 값이 제일 크다고 가정했는데
            if(sum_c[max_c] < sum_c[c]) max_c = c; // 그 값보다 큰 값이 있으면 인덱스 업데이트
        }
    }
    
    printf("%d %d", max_r + 1, max_c + 1)

}

 

반응형