비트배열이란?
1과 0만 들어있는 배열로 원하는 값만 뽑아 내기 위해 필요없는 값을 거르는 필터로 사용 가능
#include <iostream>
using namespace std;
int mask[5] = {1, 0, 1, 1, 0};
int main()
{
int data[5] = {1, 2, 3, 4, 5};
for(int i=0; i<5; i++)
{
if(mask[i] == 0)
data[i] = 0;
}
for(int i=0; i<5; i++)
cout << data[i] << ' ';
return 0;
}
다중 count
입력 받은 숫자가 배열에 몇 개 존재하는지 출력
#include <iostream>
using namespace std;
int mask[3];
int main()
{
int data[5] = {1, 5, 1, 4, 5}, cnt;
for(int i=0; i<3; i++)
cin >> mask[i];
for(int i=0; i<3; i++)
{
cnt = 0;
for(int j=0; j<5; j++)
{
if(data[j] == mask[i])
cnt++;
}
cout << mask[i] << ":" << cnt << "개\n";
}
return 0;
}
다중 Flag
입력 받은 문자가 배열에 존재하는지 출력
#include <iostream>
using namespace std;
char arr[6] = "ADCAR";
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
char input[4];
int flag = 0;
cin >> input;
for(int i=0; i<3; i++)
{
flag = 0;
for(int j=0; j<5; j++)
{
if(input[i] == arr[j])
{
flag = 1;
break;
}
}
if(flag == 1)
{
cout << input[i] << ": 존재\n";
}
else
{
cout << input[i] << ": 없음\n";
}
}
return 0;
}
다중 Flag 사용하지 않고 함수로 바꾸기
똑같이 동작하지만 설계가 더 편하고 가독성도 좋다.
#include <iostream>
using namespace std;
char arr[6] = "AVATA";
char input[3];
int isExist(char alp)
{
for(int i=0; i<6; i++)
{
if(alp == arr[i])
return 1;
}
return 0;
}
int main()
{
cin >> input;
for(int i=0; i<3; i++)
{
if(isExist(input[i]))
cout << "find" << '\n';
else
cout << "not found" << '\n';
}
return 0;
}
Offset
기준 index로 부터 얼마나 떨어졌는지를 나타내는 용어이다.
index를 입력받고 연속된 4개의 배열 값의 합을 출력
#include <iostream>
using namespace std;
int arr[10] = {4, 3, 1, 5, 7, 6, 9, 10, 2, 8};
int getSum(int baseIndex)
{
int sum = 0;
for(int i=baseIndex; i<baseIndex+4; i++)
{
sum += arr[i];
}
return sum;
}
int main()
{
int base;
cin >> base;
cout << getSum(base);
return 0;
}
두 배열이 같은지 확인하는 법 (string 사용하지 않고)
Flag 사용
#include <iostream>
using namespace std;
char data1[5] = "HIFV", data2[5] ="HIFV";
int main()
{
int flag = 0;
for(int i=0; i<4; i++)
{
if(data1[i] != data2[i])
{
flag = 1;
break;
}
}
if(flag == 1)
cout << "불일치";
else
cout << "일치";
return 0;
}
isSame() 함수를 사용하기
#include <iostream>
using namespace std;
char data1[5] = "HIFV", data2[5] ="HIFV";
int isSame()
{
for(int i=0; i<4; i++)
{
if(data1[i] != data2[i])
return 1;
}
return 0;
}
int main()
{
if(isSame())
cout << "불일치";
else
cout << "일치";
return 0;
}
'C++ > 공부 정리' 카테고리의 다른 글
함수 오버로딩, public & private (0) | 2021.10.04 |
---|---|
클래스, 재귀함수 (0) | 2021.10.01 |
Direct offset 배열, 구조체, 2차원 배열에서 패턴찾기 (0) | 2021.10.01 |
문자열 속 패턴 찾기, DAT(Direct Address Table) (0) | 2021.09.19 |
length() 사용하지 않고 문자열 길이 구하여 배열 속 요소 카운트하기 (0) | 2021.09.15 |