먼저 비트 연산자에 대해서 알아보겠습니다.
And 연산자는 두 비트가 모두 1일 경우에만 1이 되는 경우입니다.
OR 연산자는 두 비트 중에서 하나라도 1이면 1이 되는 경우입니다. 둘 다 0일경우에만 0이 됩니다.
XOR 연산자를 보시면 두비트가 같으면 0, 다르면 1이 되는 경우입니다.
NOT 연산자는 각비트를 반전, 0이면 1, 1이면 0이 되는 경우입니다.
Left Shift는 비트를 왼쪽으로 이동 하나 이동할 때마다 곱하기 2와 같게 됩니다. 이진수이기 때문에 한자리를 올린다는 것은 2를 곱하는 것과 같습니다.
Right Shift는 비트를 오른쪽으로 이동 하나 이동할 때 마다 나누기 2와 같게 됩니다.
원소가 n개인 집합의 부분집합의 개수는 2^n와 같습니다.
이해를 위해서 코드로 부분집합을 출력해보는 예시를 보겠습니다.
i번째의 원소가 있는지 확인하는 방법과
i 번째 원소를 추가하는 방법, i번째 원소를 삭제하는 방법을 살펴 보겠습니다.
집합의 원소 개수를 새는 법을 알아보겠습니다.
정수 값에서 bit가 1인 값을 반환해주는 메서드가 있습니다.
자체구현을 해 볼 수도 있습니다.
지금까지 배운 것을 활용해서 연습문제를 하나 풀어보겠습니다.
6이 주어지고 해당 만큼 원소의 값들이 주어집니다.
Scanner와 for문을 이용해서 원소의 값들을 받아주고 Solve() 메서드를 실행합니다.
Solve()메서드는 n만큼 <<한 값까지 부분집합 원소가2개인 경우에서 합이 7인경우를 count해주는 것입니다.
'코딩테스트 > 알고리즘' 카테고리의 다른 글
JAVA 코딩테스트 준비하기 - 완전 탐색 - (0) | 2021.08.24 |
---|---|
Java 코딩테스트 준비하기 - 재귀(Recursion) - (0) | 2021.08.16 |
Java 코딩테스트 준비하기 - 배열과 입출력 - (0) | 2021.08.14 |