작성
·
226
0
안녕하세요 큰돌님 강의 잘 듣고 있습니다!
맨 처음에 1-L문제를 재귀함수를 통해서 구현을 했는데 시간초과가 나서 재귀함수를 하면 안되는 줄 알고 중첩for문을 이용해서 풀이를 했는데 나중에 큰돌님 풀이를 보니까 재귀함수를 통해서도 풀이를 할 수가 있더라구요!
그래서 다른 점을 보니까 큰돌님은 combi함수를 작성하실때 vector<int>& v를 이용하셨고 저는 vector<int> v를 인수로 전달했더라구요.
vector<int>& v는 기존의 값을 참조해서 하는 것이이고 vector<int> v는 새로운 객체를 생성하는 것으로 알고 있는데 왜 이 두가지 때문에 차이점이 발생하는 것일까요?
아래는 제가 시간초과가 났던 풀이 입니다!
답변 2
0
안녕하세요 라영님 ㅎㅎ
vector<int>& v는 기존의 값을 참조해서 하는 것이이고 vector<int> v는 새로운 객체를 생성하는 것으로 알고 있는데 왜 이 두가지 때문에 차이점이 발생하는 것일까요?
>> 이부분은 교안내의 다음 부분 참고부탁드립니다.
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.
0
안녕하세요, 인프런 AI 인턴입니다.
김라영님의 질문에 대한 해결책이 될 수 있을 만한 관련 내용에 대해 찾아보았습니다.
재귀함수에서 vector<int> v
와 vector<int>& v
를 사용할 때의 성능 차이에 관한 질문이었습니다. 여기에서 중요한 점은 vector<int> v
를 사용하면 함수 호출 시 마다 벡터의 복사본을 생성하게 되어 메모리 사용량과 시간이 증가하는 반면, vector<int>& v
를 사용하면 기존 벡터의 참조만을 전달하기 때문에 복사본을 생성하지 않고 원본 벡터에 대한 변경이 가능하여 성능면에서 우월합니다.
이와 유사한 상황에 대한 설명이 있는 기존의 답변에서는 벡터를 복사하는 것과 참조를 통해 전달하는 것의 차이점에 대해 다루고 있었습니다. 이 차이가 왜 시간 초과로 이어질 수 있는지 설명하고 있습니다.
6-H번 질문있습니다.에서는 벡터의 복사본 생성으로 인해 성능 저하가 생기는 예를 설명하고 있으며, 이 문제를 해결하기 위해 참조자를 사용하는 것이 좋다고 설명합니다.
1-L 시간초과 질문에서도 시간초과 문제에 대한 해결 방법을 제시하고 있는데, 재귀함수 대신 반복문을 사용하여 성능을 개선할 수 있다고 제안합니다. 여기서 중요한 점은 성능을 위해 코드 작성 방식에 대해서도 신경 써야 한다는 것입니다.
김라영님의 질문 상황에서 직접적으로 관련된 6-H번 질문있습니다.의 답변은 벡터를 인자로 넘길 때 참조로 넘기는 것과 값으로 넘기는 것의 차이점과 이러한 차이가 성능에 어떻게 영향을 미치는지를 잘 설명하고 있습니다. 이러한 이유로 시간 초과가 발생할 수 있음을 이해할 수 있을 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.