C++/공부 정리
비트배열과 다중 카운트
sondiaa
2021. 9. 16. 16:48
비트배열이란?
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;
}