미해결
it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
2차원 배열 초기화 질문입니다
안녕하세요 선생님 강의 잘 듣고 있습니다!
다름이 아니라 위 사진과 같이
scanf("%d", &n);
int a[n+2][n+2] = {0,};
2차원 배열을 초기화 하고 나서 컴파일 하니까, 첨부한 사진과 같은 Warning 메세지가 뜨면서 실행 시에는 입력을 하다 말기까지 하더라구요
( * n=5로 입력 받을 경우, 원래는 25개의 숫자가 입력받아져야 하는데 6번만 입력받더라구요 ㅜㅜ)
( * 2차원 벡터로 바꿨을 때는 정상적으로 작동했습니다)
그동안 1차원 배열로 n을 입력받고 나서
int a[n] = {0,};
이런 식으로는 잘 초기화 되고 할당이 되었는데, 2차원 배열의 경우는 이게 안되는 이유가 무엇인가요?
(*동적 할당..? 과 관련있는 것인가요?)
위 사진과 같은 오류 메세지는 어떨 때 생기는 오류메세지일까요? ㅜㅜ
( * [Warning] array of array of runtime bound 라고 써져 있는 부분이요,,)
* 아래는 코드 전문입니다.
#include <stdio.h>
#include <vector>
using namespace std;
int main(){
int n, bongwoori=0;
scanf("%d", &n);
// vector<vector<int>> a(n+2, vector<int>(n+2, 0));
int a[n+2][n+2] = {0,};
for(int i=1; i<=n; i++){
for(int j=1; j<=n; j++){
scanf("%d", &a[i][j]);
}
}
for(int i=1; i<=n; i++){
for(int j=1; j<=n; j++){
if(a[i][j]>a[i-1][j]
&& a[i][j]>a[i+1][j]
&& a[i][j]>a[i][j-1]
&& a[i][j]>a[i][j+1]){
bongwoori++;
}
}
}
printf("%d", bongwoori);
return 0;
}