인프런 커뮤니티 질문&답변

cu ryu님의 프로필 이미지
cu ryu

작성한 질문수

it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비

50. 영지 (territory) 선택 (small : 2차원 배열 브루트포스)

안녕하세요 질문드립니다.!

작성

·

169

0

제가 작성한 코드에서 계속 wrong_answer가 나와 강의를 보고 코드를 수정해서 작성했습니다. 테스트를 했는데 전체적으로 너무 작은 값이 나옵니다. 제가 놓치고 있는 부분이 있는 지 확인 부탁드립니다.! 감사합니다!

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
	int i,j,h,w,sum=0,max=0,gh,gw,k,q;
	scanf("%d %d",&h,&w);
	vector<vector<int> > a(h+1,vector<int>(w+1,0));
	for(i=1;i<=h;i++){
		for(j=1;j<=w;j++){
			scanf("%d",&a[i][j]);
		}
	}
	scanf("%d %d",&gh,&gw);
	for(i=1;i<=h-gh+1;i++){
		for(j=1;j<=w-gw+1;j++){
			sum=0;
			for(k=i;k<i+gh;k++){
				for(q=j;q<j+gh;q++){
					sum=sum+a[k][q];
				}
			}
			if(max<sum)max=sum;	
		}
	}
	
	printf("%d",max);
	
	
	return 0;
}

답변 2

0

cu ryu님의 프로필 이미지
cu ryu
질문자

아!! 이제서야 보이네요 ㅜㅠ 답변 감사드립니다!!

0

김태원님의 프로필 이미지
김태원
지식공유자

       for(i=1;i<=h-gh+1;i++){
		for(j=1;j<=w-gw+1;j++){
			sum=0;
			for(k=i;k<i+gh;k++){
				for(q=j;q<j+gh;q++){
					sum=sum+a[k][q];
				}
			}
			if(max<sum)max=sum;	
		}
	}

위 코드에서 제일 안쪽 for문인 q for문에서 단순 실수가 있습니다. 

cu ryu님의 프로필 이미지
cu ryu

작성한 질문수

질문하기