인접행렬(adjacency matrix) (2 / 2) 질문
394
작성한 질문수 1
안녕하세요 큰돌님
인접행렬(adjacency matrix) (2 / 2) 강의에서
코드 궁금한게 있습니다..
1-2, 1-3, 3-4 인접 행렬이면
a[1][2] = 1 ... 등등등 만들잖아요
그럼 나머지 공간 a[0][0] = ....등등 0으로 자동 할당 되는거 맞나요?
그럼 main 메서드에
for(i =0 ...)
for(j =0 ...)
if(a[i][j] && visited[i] == 0)
go(i)
이 코드로 보면 i=0 ,j=0 일때 go함수가 호출될거 같은데
go(i)
cout << i << \n
cout가 0을 찍어야하는게 아닌가요?
그리고 if문에 조건문 true false에 따라 코드 타는걸로아는데
if(visited[i])
if(a[i][j])
이런경우 0 또는 1로 값이들어가면 C++에서는 1이면 true 로도 볼수 있나요?
답변 1
0
안녕하세요 혁진님 ㅎㅎ
그럼 나머지 공간 a[0][0] = ....등등 0으로 자동 할당 되는거 맞나요?
>> 네 맞습니다. 이는 전역변수로 설정되어있기 때문에 초기 배열은 0으로 모두 초기화 되기 때문입니다.
예를 들어 다음 코드를 볼까요?
#include<bits/stdc++.h>
using namespace std;
int a, b, c;
int main(){
a = 2;
cout << a << " : " << b << " : " << c << "\n";
return 0;
}여기서 b, c는 모두 0으로 초기화가 됩니다.
지역변수는 stack에 할당이 되고 예측할 수 없는 쓰레기값이 할당이 됩니다. 전역변수는 bss segement 또는 data segment에 들어가면서 값을 초기화 하지 않은 경우 0으로 초기화가 됩니다.
좀 더 자세히 설명하자면
해당부분, 전역변수는 정적할당이 일어나며 컴파일단계에서 메모리를 할당하게 됩니다.
이 때 BSS segment와 Data segment로 나뉘어서 저장되는데(code, text segment는 제외)
BSS segment는 전역변수,static, const로 선언되어있는 변수 중 0으로 초기화 또는 초기화가 어떠한 값으로도 되어 있지 않은 변수들이 이 메모리 영역에 할당되기 때문입니다.
if(visited[i])
if(a[i][j])
이런경우 0 또는 1로 값이들어가면 C++에서는 1이면 true 로도 볼수 있나요?
>>네 맞습니다. C++에서는 0이 아니면 모두 true한 값으로 봅니다. 이는 보통의 다른 언어들도 비슷합니다.
그럼 main 메서드에
for(i =0 ...)
for(j =0 ...)
if(a[i][j] && visited[i] == 0)
go(i)
이 코드로 보면 i=0 ,j=0 일때 go함수가 호출될거 같은데
go(i)
cout << i << \n
cout가 0을 찍어야하는게 아닌가요?
>> 해당 부분 코드 공유 가능할까요?
이 코드 말씀하시는 거 아닌가요?
#include<bits/stdc++.h>
using namespace std;
const int V = 10;
bool a[V][V], visited[V];
void go(int from){
visited[from] = 1;
cout << from << '\n';
for(int i = 0; i < V; i++){
if(visited[i]) continue;
if(a[from][i]){
go(i);
}
}
return;
}
int main(){
a[1][2] = 1; a[1][3] = 1; a[3][4] = 1;
a[2][1] = 1; a[3][1] = 1; a[4][3] = 1;
for(int i = 0;i < V; i++){
for(int j = 0; j < V; j++){
if(a[i][j] && visited[i] == 0){
go(i);
}
}
}
}
이 코드를 돌려보면

다음과 같이 0은 출력되지 않는 것을 볼 수 있습니다. 확인 부탁드립니다.
감사합니다.
0
아아 감사합니다
If (a[0][0] && visited[0] == 0)
-> if(0 && 0 == 0)
-> if( 0 == 0)
-> if(true)로 생각했었는데 그게아니라 if가 0값이라 코드가 안탄거로 생각하면되나요?
REST API (Self-descriptive messages)
0
28
1
시스템 엔지니어 관련 질문입니다.
0
53
2
오버라이딩 관련하여 질문드립니다.
0
62
2
교착상태의 4가지 필요조건이 필요충분조건이 아닌 이유
0
91
1
렌더 트리, 렌더 레이어와 그래픽 레이어
0
57
2
로컬스토리지, 세션스토리지, 쿠키의 공통점
0
68
1
IPv4가 IPv6보다 빠른 경우
0
103
2
UDP가 전송계층의 역할을 못하는 건 아닌지
0
59
1
Path MTU 발견하였음에도 패킷 분할이 필요한 이유?
0
65
2
교재의 LFU 알고리즘에서 6번이 왜 히트인가요?
0
64
2
페이지 교체 알고리즘? 프레임 교체 알고리즘?
0
83
2
Static 키워드가 메모리에 올라가는 시점
0
78
2
헤더 압축부분 질문드립니다
0
73
2
공유 캐시 관련 질문 드립니다.
0
56
2
컨텍스트는 context와 contextual information으로 나눠진다는게 무슨뜻인가요?
0
201
1
회선과 대역폭의 관계
0
63
2
44강 질문
0
95
2
버스 토폴로지 질문 있씁니다
0
55
1
자바스크립트, xml 문법 관련
0
67
2
전략패턴과 의존성주입 질문
0
69
2
Model이 비즈니스 로직을 담당하나요?
0
108
2
CS 공부 하는 법
0
181
2
큰돌님 블로그에 개념정리해서 올려도될까요!
0
137
2
FIN 세그먼트 질문
0
72
2





