인프런 커뮤니티 질문&답변
값의 교환에 사용되는 변수의 위치.
작성
·
15
0
안녕하세요 강사님. 버블정렬을 구현하면서 의문점이 생겨 질문을 남김니다.
저는 값의 교환에 사용되는 tmp변수의 선언을 반복문 외부, 즉 반복문보다 먼저 선언을 했고 그 이유는 매번 값을 교환할 때마다 변수를 선언하는것이 비효율적이라고 생각했습니다.
질문1. 반복문 내부에서 변수를 매번 선언하는것이 정말 비효율적인가?
질문2. tmp변수를 반복문보다 먼저 선언하고 활용하는 것이 정말 효율적인가? 잠재적인 리스크는 없는가?
첨부자료로 제 소스코드 캡처본과 강의 타임라인을 남기겠습니다!

13:41 ->오류 발견 및 반복문 내부 최종완성
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
김대건님의 질문에 답변드리겠습니다. 버블 정렬 시 tmp 변수를 어디에 선언하느냐에 따라 코드의 효율성 및 리스크를 고민하시는 질문이네요. 이와 관련하여 중요한 몇 가지 포인트를 요약해보겠습니다.
반복문 내부에서 변수를 매번 선언하는 것이 비효율적일까요?
- 일반적으로 함수나 반복문 내부에서 변수를 선언하면 해당 블록이 실행될 때마다 변수가 새로 생성됩니다. 이는 메모리 할당 및 해제의 오버헤드가 생길 수 있지만, 현대의 컴파일러는 이러한 오버헤드를 최소화할 수 있는 최적화 기법을 많이 사용하기 때문에 실제로 체감할 수 있는 정도의 큰 비효율성을 유발하진 않습니다. 하지만 매우 빈번한 반복문이라면 이러한 최적화에도 불구하고 약간의 성능 차이가 있을 수 있습니다.
- 일반적으로 함수나 반복문 내부에서 변수를 선언하면 해당 블록이 실행될 때마다 변수가 새로 생성됩니다. 이는 메모리 할당 및 해제의 오버헤드가 생길 수 있지만, 현대의 컴파일러는 이러한 오버헤드를 최소화할 수 있는 최적화 기법을 많이 사용하기 때문에 실제로 체감할 수 있는 정도의 큰 비효율성을 유발하진 않습니다. 하지만 매우 빈번한 반복문이라면 이러한 최적화에도 불구하고 약간의 성능 차이가 있을 수 있습니다.
tmp변수를 반복문 외부에 선언하는 것이 정말 효율적일까요? 잠재적인 리스크는 없는가?tmp변수를 반복문 외부에 선언하면 매번 메모리를 할당하지 않아도 되어 약간의 성능 향상이 있을 수 있습니다. 다만, 이러한 이점은 매우 작은 크기의 변수에서 확연하게 드러나지는 않을 수 있습니다.
- 잠재적인 리스크로는 가독성과 유지보수성이 있습니다. 외부에서 변수를 선언하면 해당 변수가 어디서 사용되는지 명확하지 않을 수 있으며, 특히 복잡한 코드베이스에서 예상치 못한 버그를 유발할 수도 있습니다. 따라서 변수의 범위(Scope)를 관리하여 코드의 가독성을 높이는 것이 중요합니다.
추가 자료로 버블 정렬에 대한 상세한 설명이 담긴 게시물을 공유해 드립니다:
- Algorithm: Bubble Sort Explained: 버블 정렬이 어떻게 동작하는지 알기 쉽게 설명한 자료로, 코드의 최적화를 도울 수 있습니다.
김대건님의 코드 작성에 있어서는 버블 정렬처럼 성능에 아주 민감하지 않은 알고리즘에서는 가독성과 유지보수성을 더 고려하는 것이 좋습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





