본문 바로가기
개발/C, C++

[c/c++] 배열 룩업 테이블(look up table)

by 77monkey 개발자 2023. 8. 27.
반응형

배열에 대해서 순차적으로 배우고 있습니다. 오늘은 lookup table에 대해서 알아보도록 하겠습니다. lookup table도 알고리즘 문제를 풀거나 실제 코딩에서도 사용하는 것이기 때문에 꼭 익히시길 바랍니다. 

 

배열 룩업 테이블

배열 룩업 테이블은 미리 계산된 값을 저장하고 있는 배열입니다. 주로 복잡한 연산이나 함수의 결과 값을 미리 계산하여 배열에 저장한 후, 필요한 경우 배열을 참조하여 계산을 대신 수행하는 데 사용됩니다. 이를 통해 연산의 속도를 높이거나 코드의 가독성을 향상할 수 있습니다.

 

배열 룩업 테이블 장점

배열 룩업 테이블은 다음과 같은 상황에서 유용하게 사용될 수 있습니다.

 

1. 계산 비용이 큰 연산을 대신

배열 룩업 테이블을 사용하여 연산의 결과 값을 미리 저장해 둔 후, 필요한 경우 배열을 조회하여 복잡한 계산을 피할 수 있습니다. 이는 특히 계산이 복잡하거나 반복적으로 수행되는 경우에 유용합니다.

 

2. 수학 함수 및 테이블 데이터

삼각함수나 로그 함수와 같은 수학 함수의 계산은 시간이 많이 걸릴 수 있습니다. 이러한 함수의 값을 미리 계산하여 배열에 저장하고 필요한 때마다 조회하여 사용할 수 있습니다.

 

3. 정보 검색 및 변환

어떤 값에 대한 변환 값을 미리 계산하여 배열에 저장해두면, 정보 변환 작업을 간단하게 처리할 수 있습니다. 예를 들어 온도의 섭씨-화씨 변환 테이블을 룩업 테이블로 사용할 수 있습니다.

 

4. 게임 프로그래밍

게임에서는 맵 데이터나 특정 위치의 정보를 미리 계산한 배열로 저장하여 게임 내에서 빠르게 접근할 수 있도록 합니다.

 

배열 룩업 테이블 예시

배열 룩업 테이블 예시는 무엇을 할까 고민을 하다가 처음에 떠올랐던 달력의 마지막 날짜를 출력하는 코드를 보도록 하겠습니다. 

#pragma warning (disable: 4996)
#include <stdio.h>

int main() {
	const int last_day[] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
	int month;

	printf("어느 달의 마지막 날을 보여드릴까요?\n");
	printf("달 입력:");
	scanf("%d", &month);

	printf("%d달의 마지막 날은 %d 입니다.\n", month, last_day[month]);

	return 0;
}

예제를 보시면 아시겠지만, 달의 마지막 날을 미리 작성해 둠으로써, last_day 배열에 month을 입력함으로써 해당 달의 마지막 날을 알 수 있습니다. 보통 이렇게 배열 룩업 테이블을 사용할 경우 const를 사용하게 됩니다. 왜냐하면 바뀌는 것이 아닌, 고정된 값이고 수정될 일이 없기 때문입니다. 

 

마무리

배열 룩업 테이블은 개발에서 사용하다가 실제로 사용하게 되어서 작성하게 되었습니다. 해당 룩업테이블은 수식으로 표현하기 어려운 값이고, 규칙성이 없어서 룩업테이블을 이용해서 접근할 수 있도록 했습니다. 저처럼 여러분도 코드에서 배열 룩업 테이블을 활용해 보시길 바랍니다.

반응형

'개발 > C, C++' 카테고리의 다른 글

[C/C++] 산술 연산자  (0) 2023.09.05
[c/c++] 2차원 배열, N차원 배열  (0) 2023.08.30
[c/c++] 1차원 배열 (2)  (0) 2023.08.26
[c/c++] 1차원 배열  (0) 2023.08.25
[c/c++] switch문  (0) 2023.08.21