인프런 커뮤니티 질문&답변
DFS 함수 선언
작성
·
195
0
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <stack>
int a[101],n;
int tmp[101];
using namespace std;
void merge(int start, int end){
if(start >= end) return;
else {
int mid = (start+end)/2;
merge(start,mid);
merge(mid+1,end);
int i = start;
int j = mid+1;
int k = start;
while (i <= mid && j <= end){
if(a[i] <= a[j]) tmp[k++] = a[i++];
else tmp[k++] = a[j++];
}
if(i <= mid) {
while(i<=mid){
tmp[k++] = a[i++];
}
}
else if (j<= end){
while(j<= end){
tmp[k++] = a[j++];
}
}
for (int t = start; t <= end; t++){
a[t] = tmp[t];
}
}
}
int main(){
int n;
scanf("%d",&n);
for(int i = 1; i <= n; i++){
scanf("%d",&a[i]);
}
merge(1,n);
for (int t = 1; t <= n; t++){
printf("%d ",tmp[t]);
}
return 0;
}
함수를 선언할 때 선생님께서는 merge(a,1,n)으로 배열까지 앞에 넣어 선언했는데 저는 merge(1,n)으로 해도 실행이 되었습니다.
앞에 배열을 넣어주는 특별한 이유가 있나요?
퀴즈
67%나 틀려요. 한번 도전해보세요!
재귀 함수가 호출될 때, 함수의 지역 변수, 매개변수, 복귀 주소 등의 정보는 어떤 자료구조에 저장되어 관리될까요?
큐 (Queue)
스택 (Stack)
배열 (Array)
연결 리스트 (Linked List)






감사합니다.