CHULMING   4년 전

이 문제를 풀 때 처음에 들어오는 9x9 인풋을 전역변수가 아닌 지역변수 벡터로 받아오고,

함수를 호출할 때마다 매개변수로 벡터를 넘겨주는 형식으로 코드를 진행했을 때 시간초과를 받았는데,

혹시나 해서 벡터를 전역변수로 선언하고, 함수 호출할 때마다 값을 원래대로 돌려주는 형태로 바꿔서 제출했더니

정답을 받았습니다.

아무래도 함수호출이 많아졌을 때 매개변수 전달도 많아져서 오버헤드가 발생하는 것일까라는 생각이 들어 질문해봅니다.


(1) 전역변수 선언이  (2) 지역변수 선언 후 매개변수로 전달하는 것 보다 수행시간이 더 빠른건가요?

아니면 로직상 오류였을까요..?

portableangel   4년 전

14번 줄을

void recur(vector< vector<int> >& input) {

으로 바꾸고, 19~20번 줄 사이에 input[y][x] = 0; 을 추가한 뒤 다시 제출해보세요. C++에서 벡터를 그냥 넘기면 레퍼런스가 아닌 복사로 넘어가게 됩니다.

CHULMING   4년 전

input[y][x] = 0 을 추가 안하고, 레퍼런스가 아닌 복사를 의도했었는데....

매개변수에 따라 속도의 변화는 없는걸까요!?


baekjoon   4년 전

복사를 쓰면 복사하는데 걸리는 시간도 포함시켜야 합니다.

CHULMING   4년 전

감사합니다.

댓글을 작성하려면 로그인해야 합니다.