비트연산자 & 를 이용하여 주어진 값보다 작은 최대 값 구하기
조건
- 1부터 n까지의 정수를 가지는 시퀀스 S 정의
- S에서 임의의 두 정수 a, b의 비트값이 k 보다 작은 최대 비트값 얻기(단, a < b)
제한사항
- 1 ≤ q ≤ 10³
- 2 ≤ n ≤ 10³
- 2 ≤ k ≤ n
나의 풀이
- 최종적으로 전달할 max 값을 기본 0으로 지정
- 이중 for 문을 이용하여 시퀀스를 순환하여 비트연산 수행
- a < b 이므로
- a에 담기는 범위는 1 ~ (n-1)
- b에 담기는 범위는 a+1 ~ n
- a & b 를 이용하여 비트연산자 수행
- 수행된 결과와 숫자값인 k 값을 비교
- Number(a&b) < k
- a&b < k 인 값 중 최댓값을 담아 리턴
- Math.max() 를 사용했으나, if 문을통해서도 구현 가능
- if 문이 훨씬 효율적일 수도 ?
- Math.max() 를 사용했으나, if 문을통해서도 구현 가능
- a < b 이므로
// 생략
function getMaxLessThanK(n , k) {
let max = 0;
for(var a = 1; a < n; a++) {
for (var b = a+1; b <= n; b++) {
if ((a & b) < k) {
max = Math.max(max, (a&b))
}
}
}
return max;
}
//후략
결과
'HackerRank' 카테고리의 다른 글
[해커랭크] Day 9: Binary Calculator (javascript) (0) | 2022.08.19 |
---|---|
[해커랭크] Day 7: Regular Expressions Ⅱ (javascript) (0) | 2022.08.19 |
[해커랭크] Day 5: Template Literals (javascript) (0) | 2022.08.19 |
[해커랭크] Day 8: Buttons Container (javascript) (0) | 2022.08.18 |
[해커랭크] Day 7: Regular Expressions Ⅰ(javascript) (0) | 2022.08.18 |