inflearn logo
강의

Course

Instructor

Introduction to Algorithm Problem Solving for IT Employment (with C/C++): Coding Test Preparation

47. Peak (2D Array Search)

2차원 배열 초기화 질문입니다

1394

dldldksl

6 asked

0

오류안녕하세요 선생님 강의 잘 듣고 있습니다!

다름이 아니라 위 사진과 같이

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;
}

이차원배열 초기화 C++ 코테 준비 같이 해요!

Answer 2

1

codingcamp

안녕하세요^^

C++동적 배열 할당은 포인터와 new 연산자를  쓰거나 벡테로 해야 합니다.

int a[n] = {0,};  이런 방식은 하면 안되는 방식입니다. 

0

dldldksl

아하 답변 감사합니다!

줄곧 int a[n] = {0,};  이렇게 써왔는데, 이 방식이 왜 안되는건지 여쭤봐도 될까요??

(* 어떤 컴퓨터에서는 안된다거나,, 메모리 할당에 어떤 문제가 있다거나 하는 이유요..!!

그냥 궁금해서 여쭤봅니다!!!)

0

yeni

안녕하세요! 저도 잘 알고있는게 아니라 조심스럽지만, 제가 알기로 할당을 할 때 코드를 읽는 순서가 오른쪽 <- 왼쪽이라고 알고 있습니다!
컴파일시 int a[n] = { 0, };으로 초기화 할 때 n을 알 수 없어서(n은 런타임에 들어오는 값이니) 생기는 문제같습니다. 선생님께서 말씀하신대로 new 연산자를 이용한 동적 할당이나 벡터를 이용해서 해결하면 될 것 같습니다!

혹은
int a[n];
a[인덱스] = 할당하고자하는 값;
으로 나누면 개별 값에 접근과 할당이 가능합니다.

초기화를 원할 경우
fill(a, a+n, 초기화 원하는 값)으로 할 수 있습니다!

dldldksl님께서 n을 입력받은 후 int a[n] = { 0, }이 가능했다고 하셨는데, n 값을 입력받는게 아니라 다른 함수에서 파라미터로 n을 넘겨받는 경우는 아니었을까 조심스럽게 예측해봅니다. (저도 비슷한 고민을 한 적이 있었어서요...!) 말씀하신 방식으로 실행이 되었던 코드가 있으시다면 더 자세히 알 수 있을 것 같아요!

(틀린 부분 있으면 수정 부탁드리겠습니다..!)

테스트 케이스 질문

0

373

1

병합정렬 시간복잡도 질문

0

462

1

41.연속된 자연수의 합 문제풀이에서 수학적인 원리를 모르고 있습니다.

0

1345

2

질문드립니다.

0

376

1

질문드립니다!

0

430

1

dev 프로그램 질문

0

275

1

문제가 이해가 안되요

0

376

1

4번 나이차이 문제 접근법 질문 드립니다.

0

307

1

source file not compiled

0

1047

3

59번 질문드립니다.

0

372

1

25번 문제 질문

0

349

1

4. 나이차이 문제 질문입니다.

0

372

1

90번 라이언 킹 심바 1번 테스트 케이스

0

470

1

71번 문제 전역 변수 질문 있습니다

0

365

1

75번, 79번 priority_queue관련

1

356

1

75.최대 수입 스케줄

0

400

2

복면산 정답의 수

0

431

1

테스트 케이스에 대해서

0

445

1

수업 내용 질문입니다!

1

232

1

풀어보면 좋은 문제 목록 - 2580 스토쿠 DFS 질문입니다!!

0

822

2

12. 플로이드-와샬(그래프 최단거리) . 27:25초

0

255

1

다른 풀이 방식

0

317

1

크루스칼 vs 프림

0

306

1

숫자 총개수 small 질문있습니다.

0

243

1