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

수범님의 프로필 이미지
수범

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

2주차 개념 #4-2. 인접행렬(adjacency matrix)

2주차 개념 #4- 인접행렬 질문

작성

·

301

1

안녕하세요 큰돌님.

인접행렬 강의 관련하여 질문드립니다.

 

[문제] 정점 20개인 그래프로 인접행렬 표현 시 메모리 최소로 쓸때, 배열 어떻게 만들어야 하나요?

 

 

 

  • 질문1(강의 59초)

배열을 표현할때bool a[10][20]으로 할수도 있다라고 하셨는데, 이 표현이 20개의 노드중 10개의 노드로만 단방향 경로로 그래프를 만든다는 의미일까요?

 

  • 질문2(강의 1분25초)

    arr[20][20] 필요한데 이보다 큰값을 부여할수 있다라고 언급하셨는데 a[10000][10000], 노드 20개를 이용해서 a[10000][10000] 배열을 어떻게 만들수 있는지 궁금합니다.

답변 1

0

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 수범님ㅎㅎ

[문제] 정점 20개인 그래프로 인접행렬 표현 시 메모리 최소로 쓸때, 배열 어떻게 만들어야 하나요?

 >> a[20][20] 이렇게 만들면 됩니다.

  • 질문1(강의 59초)

배열을 표현할때bool a[10][20]으로 할수도 있다라고 하셨는데, 이 표현이 20개의 노드중 10개의 노드로만 단방향 경로로 그래프를 만든다는 의미일까요?

>> 아닙니다. 저부분은 타자를 치는 중이구요 결국 bool[20][20]에서 bool [1000][1000]를 만드는 부분입니다. 즉 20개 노드라도 배열의 크기를 크게 할 수 있다는 부분입니다.

  • 질문2(강의 1분25초)

    arr[20][20] 필요한데 이보다 큰값을 부여할수 있다라고 언급하셨는데 a[10000][10000], 노드 20개를 이용해서 a[10000][10000] 배열을 어떻게 만들수 있는지 궁금합니다.

>> 음.. 자, 노드의 개수는 20개에요. 그러면 이 노드들을 표현하려면 a[20][20]이 필요한 것은 자명하죠? 근데 그냥 배열의 크기를 좀 더 크게할 수는 있다는 것이죠.

예를 들어서 저는 {1, 2, 3}을 배열로써 표현하고 싶어요.

int a[3]으로써 할수도 있겠죠?

그렇지만, int a[10]으로도 {1, 2, 3}은 표현이 가능하겠죠?

그런 의미입니다.

 

 

또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제가 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.

수범님의 프로필 이미지
수범
질문자

안녕하세요 큰돌님.

결론적으로는 노드가 20개를 int a[1000]에도 넣을수 있고, a[10000]에도 넣을수 있다라는는 이야기시죠?

노드 20개의 자료를 해당 배열에 입력하고, 배열의 나머지 자리는 비어있는 상태이구요.

큰돌님의 프로필 이미지
큰돌
지식공유자

네 맞습니다.

수범님의 프로필 이미지
수범

작성한 질문수

질문하기