DAT- Direct Address Table

- vector 기본사용법

#include<iostream>
#include<vector>
using namespace std;
int main()
{
    int arr[5] = { 1,2,3,4,5 };
    vector<int> vect = { 1,2,3,4,5 };
    
    vector<int>vect2;
    for (int x = 0; x < 5; x++)
    {
        int a;
        cin >> a;
        vect2.push_back(a);
    }
    vector<int>vect3(10);
    for (int x = 0; x < 5; x++)
    {
        cin >> vect3[x];
    }
    return 0;
}
    vector<int>vect(10, 4); //10크기에 4로 초기화
    vect.insert(vect.begin(), 6); //맨앞에 6추가
    vect.insert(vect.begin()+3, 6); //원하는 자리(앞에서 3번째 자리) 6추가
    
    vect.pop_back(); //push_back() 반대 = 맨뒤 제거
    
    vect.erase(vect.begin() + 3); //원하는 자리 지우기

-2차원vector

    vector<vector<int>>t = { {1,2,3},{4,5,6} }; //이차원백터

	for (int y = 0; y < t.size(); y++) {
		for (int x = 0; x < t[y].size(); x++) {
			cout << t[y][x] << " ";
		}
		cout << endl;
	}
  int n;
    cin >> n;
    //vector<vector<int>>map(n);
    //for (int y = 0; y < n; y++)
    //{
    //    for (int x = 0; x < n; x++)
    //    {
    //        int a;
    //        cin >> a;
    //        map[y].push_back(a);
    //    }
    //}
    vector<vector<int>>map(n,vector<int>(n));
    for (int y = 0; y < n; y++) {
        for (int x = 0; x < n; x++)
        {
            cin >> map[y][x];
        }
    }

- 인접리스트 -> vector 사용시 편함

#include<iostream>
using namespace std;
struct node {
    int num;
    node* next;
};
node *arr[3];
void addnode(int from, int value)
{
    arr[from] = new node({ value,arr[from] });
}
int main()
{
    addnode(0, 1);
    addnode(0, 2);
    addnode(0, 3);
    addnode(1, 3);
    return 0;
}

 

- dat활용 counting sort

#include<iostream>

using namespace std;

int main()
{
	int arr[] = { 1,3,1,5,7,4,5 };
	int bucket[10] = {0};
	int sort[10] = {0};

	for (int i = 0; i < 7; i++) { //버켓등록 bucket[arr[x]]++;
		int target = arr[i];
		bucket[target] +=1;
	}

	for (int i = 1; i < 10; i++) { //누적합
		bucket[i] += bucket[i - 1];
	}

	for (int x = 0; x < 7; x++) { //설계 후 값 채워넣기
		int t = arr[x];
		sort[bucket[t]--] = t;
	}

	for (int i = 1; i <= 7; i++)
		cout << sort[i] << " ";

	return 0;

}

- 구조체배열(민코딩19-6)

#include<iostream>

using namespace std;

struct Train
{
	int win;
	char name[8];
};

int main()
{
	string name;
	int age;

	cin >> name >> age;
	Train t[7] = { {15, "summer"}, {33, "cloe"}, {24, "summer"}, {28, "niki"}, {32, "jenny"}, {20, "summer"}, {40, "coco"} };

	for (int i = 0; i < 7; i++) {
		if(t[i].name==name && t[i].win==age)
			cout << i;
	}
	
	return 0;

}

- direct(민코딩19-1)

#include <iostream>

using namespace std;

int map[3][3] = {
		3,5,4
		,1,1,2
		,1,3,9
};

int directY[] = { 1,-1,0,0 };
int directX[] = { 0,0,1,-1 };

int getNum(int y, int x)
{
	int sum = 0;
	for (int t = 0; t < 4; t++) {
		int ny = y + directY[t];
		int nx = x + directX[t];
		if (ny < 0 || nx < 0 || ny > 3 || nx > 3) continue;
		sum += map[ny][nx];
	}
	return sum;
}

int main() {
	
	int y, x;
	cin >> y >> x;

	cout<< getNum(y, x);


	return 0;

}

- 이중포인터(민코딩 L19-4)

#include <iostream>

using namespace std;

int main() {
	char G;
	char* p=&G;
	char** t = &p;
	char* K=&G;
	char** Q = &K;

	cin >> G;

	cout << **t <<" " << *K;

	return 0;
}

 

+ Recent posts