더북(TheBook)

잠깐만요

1차원 배열을 2차원 배열 대신 사용할 수 있을까요?

분명 배열은 ‘연속된 데이터의 집합’이라고 언급했습니다. 2차원 배열은 사람의 입장에서는 ‘이건 이미지야, 이건 좌표야’라고 생각하면서 최대한 모양을 만들려고 노력하지만 컴퓨터의 입장에서 보면 그냥 데이터가 연속적으로 많이 든 자료형에 불과하니까요. 그런 의미에서 아예 1차원 배열을 2차원처럼 속여서 사용하면 되지 않을까라고 생각할 수 있습니다. data[a][b]라면 data[a * b]와 같은 식으로 말이죠.

물론 충분히 가능합니다. 2차원 배열이지만 모든 배열의 값을 더해야 하는 등의 조건이 주어진다면 이렇게 코드를 짰을 때 배열의 차원을 낮추는(flatten) 과정을 생략할 수 있으므로 한 번쯤 시도해볼 만한 전략입니다. 배열의 최대 크기(size)는 항상 일정하게 주어지므로 data[a * size + b]처럼 추가로 계산할 필요 없이 사용할 수 있습니다.

그러나 대부분의 상황에서는 굳이 2차원 배열을 1차원으로 속여서 개발할 이유도, 필요도 없습니다. 이런 방식으로 크게 이득을 얻는 것이 없다면 주어진 대로 사용하는 것이 가장 좋습니다. 애당초 배열의 차원은 사람의 관점에서 이해하기 쉬운 형태로 등장한 개념입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.