1. DAT 란?

DAT : Direct Access Table 배열의 index에 의미를 부여하여 카운트하는 것을 말한다. 

빠르게  접근 가능하고 따로 불필요한 생성자가 없기때문에 알고리즘 문제를 푼다던지 하는 경우에 많이 사용된다.

하지만 사용하는 인덱스들의 차이가 클 경우 불필요한 저장공간을 차지하기도 하기 때문에 

위의 경우에는 해시맵을 이용하기도한다.

 

2. 활용방안

imgDAT - 1

 

imgDAT - 2

- 위의 1번이미지를 dat로 표현하면 2번 이미지가된다.

 

1. DAT를 이용한 정렬  : 아스키코드가 이미 정렬된 순서를 가지고 있기때문에 밸류만큼 인덱스를 반복한다면 카운팅 정렬이 가능하다.

- AABBCDEE ...

 

2. 중복제거 : 밸류 2이상인 인덱스들을 밸류를 1이라고 본다면 중복제거까지 가능 

- ABCDE

imgDAT - 3

3. 어떠한 값의 인덱스를 기록 : 이중어레이의 좌표들을 두개의 DAT로 관리하면 알파벳순으로 빠른접근이 가능

 

4. 값의 존재확인 : 만약 어떤 어레이에서 a,b,c 세 값의 합이 K가 되도록한다고 할 때 전부를 서치하는 것이아닌

DAT[K-a-b] 로 c가 있나 확인가능

 

 

3. c++ 기본코드


index : 문자,
value : 해당 문자가 몇 개?

#include<iostream>
using namespace std;


int main() {

    char temp[100] = "ABCCCADGGR";
    int DAT[256] = { 0, }; // 기본적인 문자(Ascii code) : 128가지, char라는 data가 표현 가능한 종류 : 256가지
    for (int i = 0; temp[i]; i++) {
        DAT[temp[i]]++; // now라는 문자가 1개 추가
    }
    for (int i = 65; i<=91; i++) {
        if (DAT[i]) cout << (char)i << " " << DAT[i] <<" / ";
    }

    return 0;
}

대문자 알파벳 A = 65 ~ Z=91

+ Recent posts