인프런 커뮤니티 질문&답변

mhyim님의 프로필 이미지
mhyim

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

1 - L 재귀로 푸는 풀이

교안 수정 제안 드립니다.

해결된 질문

작성

·

99

·

수정됨

1

큰돌님 안녕하세요?

해당 강의의 아래 질문과 같이 combi() 함수 구현 중 값에 의한 호출 / 참조에 의한 호출을 잘못해서 시간 초과가 발생했습니다.

 

// 해당 질문 링크

https://www.inflearn.com/course/lecture?courseSlug=10%EC%A3%BC%EC%99%84%EC%84%B1-%EC%BD%94%EB%94%A9%ED%85%8C%EC%8A%A4%ED%8A%B8-%ED%81%B0%EB%8F%8C&unitId=228311&tab=community&q=1286398&category=questionDetail

 

저도 combi 함수의 파라미터인 vector<int>를 값에 의한 호출로 써서 시간 초과가 났는데요, 값에 의한 호출을 사용한 이유 중 하나는 교안에 값에 의한 호출의 combi 예제가 있고 참조에 의한 호출 combi 두 가지 예제가 있어서 값에 의한 호출 예제를 사용했습니다.

 

vector<int>의 경우 무조건(?) 참조에 의한 호출이 더 좋다면, (제가 이해한게 맞다면?)

(최신 교안 150p)

image.png

 

교안의 아래 예시도 참조에 의한 호출로 바꾸면 어떨까요?

(최신 교안 기준 165p)

image.png

 

 

답변 2

1

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 ㅎㅎ mhyim님 ㅎㅎ

좋은 지적이네요. 해당 부분은 오늘내로 수정하도록 하겠습니다.

 

말씀주셔서 감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다.

mhyim님, 해당 질문에 대한 답변을 드리겠습니다.

C++에서 벡터를 매개변수로 넘길 때는 값에 의한 호출과 참조에 의한 호출이 모두 가능합니다. 값에 의한 호출은 벡터의 복사본을 생성하기 때문에 메모리 사용량이 늘어나고 성능이 저하될 수 있습니다. 반면, 참조에 의한 호출은 원본 벡터에 대한 참조만을 전달하기 때문에 복사 과정이 발생하지 않아 메모리와 성능 측면에서 효율적입니다.

교안의 예시에서 함수 호출 방식을 변경하고자 하는 제안에 대해 말씀드리자면, 알고리즘의 효율성을 높이고자 할 때는 가능한 참조에 의한 호출을 사용하는 것이 좋습니다. 따라서 교안의 예시를 반드시 참조에 의한 호출로 변경하는 것이 좋은 교육적 접근일 수 있습니다. 하지만 값에 의한 호출과 참조에 의한 호출 두 가지 방식 모두를 알고 있는 것이 중요하며, 어떤 상황에서 어느 방식을 선택해야 하는지 판단할 수 있는 능력을 기르는 것이 중요합니다.

님의 제안대로 vector와 같은 컨테이너를 사용할 때는 대부분의 경우 참조에 의한 호출을 사용하는 것이 성능상 이점을 가져옵니다. 이는 특히 대용량 데이터를 다룰 때 더욱 중요하며, 이는 강의 교안이나 코드 예제를 통해 명확히 설명되어야 합니다.

제안하신 내용을 교안 개선 제안으로 적극 반영하여, 학습자가 보다 효율적인 코드를 작성할 수 있도록 돕는 것이 좋겠습니다. 강의 내용을 검토하고 필요한 경우 업데이트하여, 좀 더 최적화된 방법을 학습자들이 이해할 수 있게 하는 것이 바람직합니다.

님의 세심한 제안 감사드리며, 앞으로도 좋은 의견 부탁드립니다!

mhyim님의 프로필 이미지
mhyim

작성한 질문수

질문하기