자료구조 & 알고리즘/큐 - 원형큐

원형큐) size = rear - front + arr.length 인 진짜 이유

꾸준함의 미더덕 2023. 9. 8. 21:22

이번 게시물은 제가 좋아하는 유튜버(간다효)처럼 제목을 지어봤습니다. 

 

원형큐에서 큐의 길이를 구할 때는 두가지 경우로 나눠서 생각해봐야 합니다.

 

1. front가 앞에, rear가 뒤에 있는 상황

2. rear가 앞에, front가 뒤에 있는 상황

 

소스코드로 나타내면 이렇게 볼 수 있는데요, 

 

int size;
if (rear - front < 0) {
    size = rear - front + arr.length;
} else {
    size = rear - front;
}

 

공식처럼 생각하면 그렇구나, 하고 넘어갈 수 있지만 ..

머리속으로 떠올리면 또 쉽게 이해가 되지 않아서.. 직접 그려보았습니다..

 

 

rear - front가 음수일 경우는

 

rear가 배열의 앞쪽에, front가 배열의 뒷쪽에 위치한 상태로

 

rear까지의 사이즈 + (배열의 사이즈 - front의 사이즈)로 계산하면 이미지로 떠올리기 쉬울 듯 합니다 !