강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của ghuhan185122
ghuhan185122

câu hỏi đã được viết

Học cấu trúc dữ liệu và thuật toán dễ dàng qua hình ảnh (Phần cơ bản)

Sắp xếp - Sắp xếp chọn

질문

Viết

·

271

·

Đã chỉnh sửa

1

수업들어보니 자바스크립트의 let 이 자바의 int 같은데, 만약 int min = i ; 선언하고 아래 if ( arr[j] < arr[min]) {

min = j ;

}

라고 하셨는데, 그러면 변수 min 에는 j 값이 저장 되기는 하지만 int 는 지역 변수라 if 문 안에서 저장된 int min 의 값이 if 문 밖으로 나가서는 for 문을 실행하여 다시 j 가 하나 더해져서 반복 실행 되었을때 min 의 값은 다시 i 로 초기화 되는건가요? 아니면 j 로 바뀐건가요 ?

 

-제가 아는 지역 변수에 대한 설명입니다

지역 변수는 선언된 함수나 메소드 내에서만 접근이 가능하고, 해당 함수나 메소드의 실행이 끝나면 그 범위를 벗어나서 접근할 수 없습니다.

알고리즘

Câu trả lời 2

0

ghuhan18님의 프로필 이미지
ghuhan18
Người đặt câu hỏi

항상 친절하게 설명해주셔서 감사합니다.

 

그럼 즉, 두번째 for 문에서 if 에서 minvalueindex = j 인데, 그게 if 조건문 안에 있는 arr [ minValueIndex] 에 영향을 미친다는 말씀 이신가요?

 

즉 제가 아는 지역변수의 개념은 if 문 {} 안에서만 값이 유효하고 그 밖에서는 유효하지 못한걸로 아는데, 보시면 if 문 안에 minValueIndex 값이 = J 로 되었지만 다시 for 문 반복 실행시 if 를 2번째 실행할때 if 조건문 안의 arr[minValueIndex] 가 왜 기존 int minValueIndex = i ; 가 되는게 아니라 j 로 그대로 있는건지 이해가 안갑니다.

이게 왜 영향을 미치는지 잘 이해가 안갑니다.

 

혹여나 안에 있는 inner loop 들이 가장 밖에 있는 for loop 과 연관이 있기 때문에 그 for 문까지는 영향을 끼치는 건가요?

gamja5님의 프로필 이미지
gamja5
Người chia sẻ kiến thức

지역변수의 개념은 선언과 소멸로 바라보시면 될 것 같습니다.
let minValueIndex가 첫 번째 for문 안에 선언되어 있기 때문에 해당 for문을 다시 반복하기 전까지는 계속 살아있습니다.
즉 inner for문이 동작하는 동안에는 지역변수는 계속 살아있습니다.
따라서 j로 값을 덮어쓰면 계속 유지됩니다.
다른 언어에서 같은 코드를 작성하더라도 똑같습니다.
중첩 for문으로 테스트 해보시길 바랍니다

0

gamja5님의 프로필 이미지
gamja5
Người chia sẻ kiến thức

min은 SelectionSort함수 내 첫 번째 for문 안에 선언되어 있으므로 첫 번째 for문안에서 유효합니다.
따라서 두 번째 for문에서 값을 수정했더라도 첫 번째 for문 안의 값은 그대로 유지됩니다.
다만 첫 번째 포문의 다음 인덱스때는 i값으로 초기화해주기 때문에 i값으로 변하겠죠?

ghuhan18님의 프로필 이미지
ghuhan18
Người đặt câu hỏi

항상 친절하게 설명해주셔서 감사합니다.

 

그럼 즉, 두번째 for 문에서 if 에서 minvalueindex = j 인데, 그게 if 조건문 안에 있는 arr [ minValueIndex] 에 영향을 미친다는 말씀 이신가요?

 

즉 제가 아는 지역변수의 개념은 if 문 {} 안에서만 값이 유효하고 그 밖에서는 유효하지 못한걸로 아는데, 보시면 if 문 안에 minValueIndex 값이 = J 로 되었지만 다시 for 문 반복 실행시 if 를 2번째 실행할때 if 조건문 안의 arr[minValueIndex] 가 왜 기존 int minValueIndex = i ; 가 되는게 아니라 j 로 그대로 있는건지 이해가 안갑니다.

이게 왜 영향을 미치는지 잘 이해가 안갑니다.

 

혹여나 안에 있는 inner loop 들이 가장 밖에 있는 for loop 과 연관이 있기 때문에 그 for 문까지는 영향을 끼치는 건가요?

Hình ảnh hồ sơ của ghuhan185122
ghuhan185122

câu hỏi đã được viết

Đặt câu hỏi