2-Q 모범답안 코드리뷰 부탁드립니다.
195
작성한 질문수 3
안녕하세요 큰돌님
2-Q 2636문제 모범답안 코드 질문있습니다.
void dfs함수에서 return이 두개가 있는데 각각 return을 하면 다시 main함수의 dfs(0,0)직후로 넘어가지는건가요 아니면 void dfs함수 내에 있는 if문의 return과 for문 바깥에 있는 return이 다른의미를 갖는건가요? void dfs함수 내의 return부분이 어디로 가는지 헷갈립니다.
답변 1
0
안녕하세요 chan님 ㅎㅎ
void dfs함수에서 return이 두개가 있는데 각각 return을 하면 다시 main함수의 dfs(0,0)직후로 넘어가지는건가요
>>
void go(int y,int x){
visited[y][x] = 1;
if(a[y][x] == 1){
v.push_back({y,x});
return;
}
for(int i=0; i<4; i++){
int ny = y + dy[i];
int nx = x + dx[i];
if(ny < 0 || ny >= n || nx < 0 || nx >= m || visited[ny][nx])continue;
go(ny,nx);
}
return;
}여기서 return 이 두개가 있는데요.
상단 return : 기저사례를 나타냅니다. 만약 해당 부분에 요소가 1이라면 더이상 함수를 호출하지 않고 종료합니다.
하단 리턴 : 사실 아무 의미가 없습니다. void 타입은 아무것도 리턴하지 않음을 명시적으로 나타냅니다. 저기까지 도달한다는 의미는 기저사례에 안걸렸다는 의미로 저 for문이 동작하면서 아래의 dfs가 동작하게 된다는 의미입니다.
아니면 void dfs함수 내에 있는 if문의 return과 for문 바깥에 있는 return이 다른의미를 갖는건가요? void dfs함수 내의 return부분이 어디로 가는지 헷갈립니다.
>> return 은 똑같은 의미를 가집니다. return 은 함수를 종료시키면서 어떠한 값을 반환한다는 의미입니다.
int는 int타입을. ex) return 1;
void는 타입이 아닌 아무값도 아닌 것을 리턴하게 됩니다. ex) return;
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.
4 - A
0
10
1
코딩살구클럽 입장이 안됩니다
0
49
2
4-F 경우의 수 질문입니다.
0
30
2
코딩살구클럽 가입이 안됩니다.
0
64
2
살구 클럽에 대한 질문있습ㄴ디ㅏ
0
53
1
교안 158페이지 문의드립니다
0
44
2
코딩살구클럽 관련 건의사항
0
107
1
코살에 19942 다이어트 문제에 N의 범위가 빠져있슴니다
0
44
1
진행 방법 질문드립니다!
0
78
2
2-I) 왜 이 문제가 그래프이론 카테고리에 있는지 잘 모르겠습니다.
0
63
2
2주차 개념#12 트리 순회
0
32
2
백준사이트가 종료된다고 합니다.
0
309
2
백준 서비스 종료
9
943
1
sk 하이닉스 코테 대비
0
382
2
3-G 최댓값 질문
0
54
1
모듈러 연산 값이 10이 아닌 경우도 있지 않나요?
0
84
2
3-I 코드 질문드립니다.
0
63
2
3-N 질문 있습니다.
0
68
2
학습방법
0
105
2
4-H 질문 있습니다 (코드 리뷰)
0
68
2
코딩테스트 어디까지 준비해야 하는지 질문이 있습니다.
0
180
2
2-O 반례가 무엇일지 어떤 부분이 틀렸는지 잘 모르겠습니다.
0
71
2
2주차 개념 #4-2. 인접행렬 질문있습니다.
0
65
2
1-A 문제풀이 후 궁금한 점이 생겨서 질문드립니다.
0
53
2





