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

김경준님의 프로필 이미지
김경준

작성한 질문수

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

1주차 개념 #10. 구현

문제를 풀 때 변수들을 전역변수로 선언하는 이유가 있나요??

해결된 질문

작성

·

37

0

객체지향 공부를 하다 보니 전역변수를 사용하는 것이 실제 사용과 상관 없더라도 잘 안 하게 됩니다.

수업에 보면 대부분의 변수들을 전역변수로 사용하시는데 알고리즘 공부할 때는 웬만하면 전역변수로 선언하는 것이 좋은 건가요? 변수 선언할 때 팁이 있는지 궁금합니다.

답변 3

0

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

안녕하세요 경준님 ㅎㅎ

image.png

 

해당 부분은 교안내의 앞의 부분 참고 부탁드립니다.



또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.


0

저도 예전에 객체지향 공부하면서 비슷한 생각했었는데요, 아무래도 객체지향 장점이 코딩테스트에 발휘 될 일이 없다보니 객체지향과는 거리가 먼 전역변수를 사용하는 것 같습니다.

Q. 객체지향이 코딩테스트에 안좋은 이유

-> 객체지향 장점은 유지보수성, 확장성 좋은 코드를 만드는 대신 초기에 들이는 구현 시간이 많아지고, 절차 지향에 비해 속도가 느리다는 단점이 있습니다. 근데 코딩테스트에선 구현 시간과 속도가 중요하기 때문에 객체지향의 단점만 두드러집니다. 따라서 코테에서는 객체지향에 연연하지 않으셔도 되겠습니다.

Q. 전역변수 사용하는 이유

->전역변수는 프로그램 실행 시 메모리가 할당되기 때문에, 스택 영역에서 동적으로 메모리가 할당되는 지역변수보단 성능상 유리합니다. 물론 현업에서 전역변수 남발하면 확장성 없는 코드라고 욕먹기 십상이지만요. 코딩테스트에서는 유지보수성과 확장성이 전혀 필요 없어 오히려 성능에 유리한 전역변수를 사용합니다.

결론만 말하자면, 코테에는 객체지향의 단점만 부각되고, 전역변수는 지역변수보다 성능 상 유리하기 때문에 사용된다고 보시면됩니다!

0

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

김경준님, 전역변수와 지역변수 사용에 대한 질문을 주셨네요. 알고리즘 문제를 풀면서 전역변수를 사용하는 것은 몇 가지 장점이 있습니다.

전역변수 사용의 장점

  1. 자동 초기화: 전역변수는 자동으로 0으로 초기화됩니다. 특히 수많은 데이터를 다루는 알고리즘에서는 초기화를 별도로 하지 않아도 되는 점이 종종 편리합니다.

  2. 편리성: 전역변수는 프로그램의 모든 함수에서 접근할 수 있어, 여러 함수가 동일한 데이터를 참조하여 사용해야 할 때 적합합니다.

  3. 메모리 관리: 특정 알고리즘에서는 지역변수로 처리하기 어려운 대용량의 데이터를 위해 전역변수를 사용하는 것이 더 효율적일 수 있습니다.

주의사항

하지만 전역변수를 과도하게 사용하게 되면 코드의 가독성이 떨어지거나, 의도치 않은 곳에서 데이터가 변경될 수 있어 디버깅이 어렵다는 단점도 존재합니다. 따라서 전역변수는 꼭 필요한 경우에만 사용하는 것이 좋습니다.

다양한 사례와 방법

전역변수 사용과 관련된 더 많은 정보와 팁을 얻고 싶으실 경우, 관련 질문과 답변을 참고하실 수 있습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

김경준님의 프로필 이미지
김경준

작성한 질문수

질문하기