배열 등에서 인덱스를 잘못 사용했을 때 수정

글쓴이 Engineer Myoa 날짜

배열 등에서 인덱스를 잘못 사용했을 때 수정

 

가끔 개발을 하다보면 배열 첨자를 잘못 사용하는 경우가 있다.

예를 들면 arr[y][x]를 해야하는데 arr[x][y]로 했다던지..

이 때 코드가 짧으면 수정하기 어렵지 않겠으나 양이 좀 많을 경우

실수가 남아 오히려 아웃오브바운드를 만날 수도 있다.

 

이럴 경우 정규식을 지원하는 편집기에서 다음과 같이 대치(Replacement)를 한다.

사용된 정규식을 설명하면

[x]뿐 아니라 [x-1] [x+1] [x*n] 같은 모든 첨자에 대해 적용할 수 있도록 (.*?) 을 붙이고

그룹으로 묶는 이유는 이 값을 다시 사용해야 하기 때문이다.

[z$1]은 위의 검색결과에서

1) [x] 일 경우 “” 빈 스트링을 찾아 [z]로 대치될 것이고

2) [x+1]일 경우 “+1″을 찾아 $1을 통해 사용할 수 있으며 덕분에 [z]대신 [z+1]의 값으로 대치될 것이다.

 

 

왜 굳이 x->y 가 아니라 x->z인지는 아래 설명을 참고하기 바란다.

 

우리가 흔히 x,y 변수를 swap할 때 로직을 어떻게 만들던가?

int temp = x;

x = y;

y = x;

그렇다, 중간에 값을 담을 임시 변수가 필요하다.

그래서 2차원 이상의 배열에서 첨자를 변경할 경우 x->z, y->x, z->y 3단계에 걸쳐서 변경한다.

 


1개의 댓글

답글 남기기

Avatar placeholder

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다