강의

멘토링

커뮤니티

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

작성자 없음

작성자 정보가 삭제된 글입니다.

it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비

87. 섬나라 아일랜드(BFS 활용)

3중 for문에서 i를 두번 사용하셨는데

해결된 질문

작성

·

324

1

21행에서 i를 사용하시면서 for문을 돌리고 게신데 29행에서도 for문을 통해서 i를 다시 조작하고 있습니다.

이래도 되나요??

답변 1

0

김태원님의 프로필 이미지
김태원
지식공유자

29행에서의 i변수는 해당 블록에서만 유효한 변수입니다. 코드로 설명하면

for(int i = 0; i < 8; i++) {
	int xx=tmp.x+dx[i];
	int yy=tmp.y+dy[i];
	if(map[xx][yy] == 1) {
		Q.push(Loc(xx, yy));
		map[xx][yy]=0;
	}
}

위 코드에서 for(i=0~ 시작하지 않고 for(int i=0~ 으로 시작하면 i변수는 for문 블록안에서 만든 변수입니다.  이 변수는 for문 블록안에서만 유효하고 블록밖으로 나가면 컴퓨터는 인식하지 못합니다. 

그리고 main 함수안에 블록을 달리해 같은 이름의 지역변수를 만들수 있고,  해당 블록에서는 자신의 블록에서 만든 지역변수를 최우선으로 인식합니다.

하지만 실수를 줄이기 위해 3중 for문을 돌릴때에는 i, j, k와 같이 각기 다른 이름의 변수를 사용해서 코드를 구현했으면 좋겠습니다.

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기