728x90
반응형
2022.12.24
코테 문제풀이 23주차 04번 문제
문제
① 월간 코드 챌린지 시즌2 : 2개 이하로 다른 비트
② 링크
접근방법
① Long.toBinaryString() 을 사용한 2진법 변환
② 2진법 변환 규칙
풀이
① 접근방법 : ①
② 풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
import java.util.*;
class Solution {
public long[] solution(long[] numbers) {
return findNumberByBit(numbers);
}
public long[] findNumberByBit(long[] numbers) {
// Output Instance
long[] output = new long[numbers.length];
for (int i = 0; i < numbers.length; i++) {
long number = numbers[i];
long tmp = number;
int cnt = 0;
while (tmp > 0) {
if(tmp%2 == 0)
break;
tmp /= 2;
cnt++;
}
if (cnt == 0)
number++;
else
number = number + (long)Math.pow(2, cnt) - (long)Math.pow(2, cnt-1);
output[i] = number;
}
return output;
}
}
|
cs |
결과
실패이유
① 10^15 자릿수는 Long타입으로 캐스팅할때 RuntimeException이 발생한다고 한다.
풀이
① 접근방법 : ②
② 풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
import java.util.*;
class Solution {
public long[] solution(long[] numbers) {
return findNumberByBit(numbers);
}
public long[] findNumberByBit(long[] numbers) {
// Output Instance
long[] output = new long[numbers.length];
for (int i = 0; i < numbers.length; i++) {
long number = numbers[i];
long tmp = number;
int cnt = 0;
while (tmp > 0) {
if(tmp%2 == 0)
break;
tmp /= 2;
cnt++;
}
if (cnt == 0)
number++;
else
number = number + (long)Math.pow(2, cnt) - (long)Math.pow(2, cnt-1);
output[i] = number;
}
return output;
}
}
|
cs |
결과
728x90
반응형
'코딩테스트' 카테고리의 다른 글
[코테/JAVA] 스택/큐 : 올바른 괄호 (2) | 2023.01.05 |
---|---|
[코테/JAVA] 2022 KAKAO BLIND RECRUITMENT : 주차 요금 계산 (0) | 2022.12.29 |
[코테/JAVA] 월간 코드 챌린지 시즌1 : 이진 변환 반복하기 (0) | 2022.12.24 |
[코테/JAVA] 연습문제 : 최댓값과 최솟값 (0) | 2022.12.19 |
[코테/JAVA] 연습문제 : 숫자의 표현 (0) | 2022.12.19 |
댓글