인프런 커뮤니티 질문&답변
전역변수관련 질문입니다.
작성
·
251
0
안녕하세요 강사님.
해당 문제관련 질문은 아니지만 그래도 어느정도 관련이 있어 여기다가 질문글 올립니다.
전역변수관련 질문이 있습니다.
요즘 코딩테스트에는 입력값받는 코드는 안 써도 되게 함수를 주고 인자값에 입력값이 다들어있는상태에서 함수 안에서 코드를 작성하라고 되어있는 경우가 많더라구요.
저는 코딩테스트를 강사님의 '대기업대비' 전의 '코딩테스트 대비' 를 처음으로 연습을 해와서 DFS나 BFS등 이외에도 많은 문제들을 전역 변수로 활용해서 푸는게 습관이 되었습니다.
하지만 위와같이 함수안을 구현하라는 문제가 나올때 전역변수를 쓴다면 당장 문제를 맞출 수는 있겠지만 함수구현인데 전역변수를 쓴다는 것 자체가 프로그래밍 관점으로 보았을 때, 보안문제 등 의도에 어긋난 것 같다는 느낌이 들었습니다.
예를 들면 DFS구현 문제인데 함수에서는 인자로 학생의 데이터가 들어간 벡터를 넘겨주는데 강사님처럼 함수안에 DFS()로 하고 외부에 DFS함수구현을 하자니 벡터의 생명주기때문에 외부에서는 쓸수 없게 됩니다. 그래서 전역벡터변수를 하나 만들고 거기다가 함수인자값을 복사해주어서 전역변수로 문제를 풀었습니다.
아니면 원래 전역변수로 선언하던 벡터 등을 함수(DFS)에 인자로 계속 넘겨주자니 이것도 공간, 효율성에 문제가 있어보입니다.
그래서 이런 방식으로 문제를 풀었다고 해도 기업에서 보고 탈락시킬거라는 생각이들고 나중에 면접때도 왜 이렇게 풀었냐는 답변에는 답변을 잘 못할거라는 생각이 듭니다.
이런경우는 어떤식으로 보통 해결하나요? 긴 글 읽어주셔서 감사합니다
답변 1
0
안녕하세요^^
DFS를 할 때 2차원배열을 쓴다면 이 2차원배열을 DFS의 매개변수 인자로 계속 넘겨주는 형태로 저는 짜고 있습니다. 어자피 인자로 넘어가는 것은 주소이니까 공간복잡도의 악영향이 있다고는 생각되지 않습니다. 함수헤더가 길어져서 모양빠져 보이고 인자가 많아 함수호출에서 효율성이 없어보이기는 하지만 저는 그렇게 합니다.
기업에서도 문제를 해결하는 방법의 과정을 보지 이런것 같지 태클걸지는 않는 것 같습니다.




