inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

16. Anagram (구글 인터뷰 문제)

배열 위치

400

강지훈

작성한 질문수 10

0

int a[60], b[60]; 이것을 

main() 함수에 집어넣으면 no 라고 나오고

ex) 

int main() {

int a[70],b[70];

main()위에 전역함수?

ex)

int a[70],b[70];

int main(){

로 넣으면 yes로 나오는데 왜 그런건가요..

C++ 코테 준비 같이 해요!

답변 2

0

김태원

minhkim 님 답변이 맞습니다.

0

mino

선생님 답변 전에 알고 있는 거라도 말씀드리면..

말씀하신 두 개의 차이는 초기화 여부인 듯합니다.

main함수 위에 변수를 선언하게 되어버리면 전역변수가 되어서 0으로 초기화 됩니다.

그러나 main  함수 안에 변수를 선언하게 되면 지역변수가 되어서 초기화되지 않고 쓰레기값(설정치 않은 값)이 들어갈 수 있습니다. 

 이 차이 때문에 과정에서 오류가 발생한 것이 아닐까 합니다.

0

강지훈

댓글 감사합니다 한가만 더 물어봐도 될까요?? 여태껏 main함수에서 변수 선언하는데 다 괜찮았는데 이것만 오류나서...

그럼 지역변수에서 초기화할려면 어떻게해야하나요??

0

mino

이것도 제가 알고 있는 불완전한 지식으로만이라도 말씀드리면...

우선 말씀해주신 두 가지에 대해 말씀 드리겠습니다. 

1) 이것만 오류가 났다 

A. 아마도 다른 경우에는 우연하게도 해당 배열에 제대로된 값이 들어갔을 경우가 높습니다. 이 이상으로는 제가 알고 있는 지식으로 답변을 드릴 수가 없어 죄송합니다.

2) 지역변수에서 초기화하려면 어떻게 해야 하나?

A. 배열 선언과 동시에 초기화를 하시면 될 듯합니다. 

예를 들자면, int a[70] = {0, }; 

이라고 초기화를 하시면 정수형 배열 a 는 모두 0으로 초기화 됩니다. 

배열은 선언과 동시에 일괄적으로 할당할 수 있습니다. 다만 배열을 선언한 다음에는 위처럼 일괄할당을 적용하지 못하는 것으로 알고 있습니다. 

또, 배열을 선언과 동시에 할당할 경우 int a[70] = {1, } ; 라고 하면 첫번째 배열의 요소에 1이 들어가고 나머지 지정치 않은 공간은 0으로 자동 초기화가 이뤄집니다. 

테스트 케이스 질문

0

370

1

병합정렬 시간복잡도 질문

0

459

1

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

0

1340

2

질문드립니다.

0

373

1

질문드립니다!

0

427

1

dev 프로그램 질문

0

272

1

문제가 이해가 안되요

0

372

1

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

0

303

1

source file not compiled

0

1032

3

59번 질문드립니다.

0

368

1

25번 문제 질문

0

344

1

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

0

365

1

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

0

465

1

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

0

355

1

75번, 79번 priority_queue관련

1

352

1

75.최대 수입 스케줄

0

394

2

복면산 정답의 수

0

426

1

테스트 케이스에 대해서

0

441

1

수업 내용 질문입니다!

1

227

1

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

0

814

2

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

0

249

1

다른 풀이 방식

0

313

1

크루스칼 vs 프림

0

302

1

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

0

233

1