Bitwise Operators | HackerRank
Bitwise Operators | HackerRank
Apply everything we've learned in this bitwise operators' challenge.
www.hackerrank.com
<문제>

input: 비트연산하고 싶은 정수 두 개를 입력한다.
output: 두 값을 1부터 시작하여 and 연산, or 연산, xor 연산한 값을 차례로 구하고, 원래 입력한 값과 비교하여 더 작은 것 중 최대값을 출력한다. 없으면 0을 출력한다.
<코드>
void calculate_the_maximum(int n, int k) {
int maxAnd = 0;
int maxOr = 0;
int maxXor = 0;
for (int i=1; i<=n; i++) {
for (int j=i+1; j<=n; j++) {
if (((i&j) > maxAnd) && ((i&j) < k)) {
maxAnd = i&j;
}
if (((i|j) > maxOr) && ((i|j) < k)) {
maxOr = i|j;
}
if (((i^j) > maxXor) && ((i^j) < k)) {
maxXor = i^j;
}
}
}
printf("%d\n%d\n%d\n", maxAnd, maxOr, maxXor);
}
<풀이>
먼저 각 연산 값의 최대값을 저장하기 위한 변수 3가지를 선언하고, n은 1부터, k는 2부터 연산을 시작하기 위해 중첩 for문을 사용하였다. for 반복문 내부에서 i와 j를 각각 and, or, xor 연산을 하고, 해당 값을 k값과 비교해서 연산값이 원래의 max값보다 크고 k값보다 작다면 max변수의 값을 바꿨다. 마지막으로 각 연산의 max값을 출력해 문제를 풀 수 있었다.
<실행결과>

'c언어 스터디 > HackerRank' 카테고리의 다른 글
| [HackerRank] Tree: Inorder Traversal (0) | 2021.10.10 |
|---|---|
| [hackerrank] Students Marks Sum (0) | 2021.10.10 |
| [HackerRank] Tree: Postorder Traversal (0) | 2021.10.02 |
| [HackerRank] Find Digits (0) | 2021.09.26 |
| [HackerRank] Sorting-Running Time of Algorithms (0) | 2021.09.26 |