
가장 우측에 존재하는 비트 4개를 합쳐서 새로운 수를 만드는 것이 목표입니다.
쉬프트 연산을 활용하면 비트를 이동시킬 수 있습니다.
그러한 점을 활용하면 비트를 추출할 수도, 이동시킬 수도 있습니다.
#include <iostream>
using namespace std;
int num, password;
int main()
{
ios::sync_with_stdio(0), cin.tie(0);
for (int i = 0; i < 3; ++i)
{
cin >> num;
for (int j = 3; j >= 0; --j)
{
bool bit = num & (1 << j);
password = (password << 1) + bit;
}
}
cout.width(4);
cout.fill('0');
cout << password;
return 0;
}
한 번 입력을 받으면 좌측으로 4번 이동시킵니다. 왜냐하면 입력받은 수에서 4개의 비트를 붙이기 위해서입니다.
1번 이동시킬 때마다 현재 비트가 존재하는지 확인하고 존재하면 1, 존재하지 않으면 0을 붙이게 합니다.
3번 입력을 받으면 12개의 비트가 다 채워집니다.
이를 출력해 주면 됩니다. 물론 1000 미만의 값들은 1~3자리일 것이기에 4자리가 안되면 앞의 0이 채워지게 해주면 됩니다.