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;
}
'Algorithm > C++' 카테고리의 다른 글
[21.08.05] 문자열파싱하기 연습 + 스택/큐 프린터 ,송전탑 (0) | 2021.08.05 |
---|---|
[21.08.04]큐/스택 활용하기 (0) | 2021.08.04 |
[21.08.02] 재귀함수2/ 백트래킹 (0) | 2021.08.02 |
[21.07.30] 재귀함수, 트리, DAT (0) | 2021.08.01 |
[21.07.29]스택, 큐 (0) | 2021.08.01 |