문제
주어진 10진수 long 값을 -> 32비트 2진수로 변환 -> 비트 뒤집기 -> 10진수로 반환
다른 사람 풀이
private static long flippingBits(long n) {
// 10진수 -> 2진수 -> 32비트 남은자리에 0 -> 각 표현 뒤집음 -> 10진수 반환
// 10진수 -> 2진수
String binary = Long.toBinaryString(n);
StringBuilder sb = new StringBuilder();
// 32비트에서 2진수 길이 뺀 만큼 먼저 0을 채워줌
for(int i=0; i < 32-binary.length(); i++) {
sb.append('0');
}
// 그 다음에 2진수 채움
sb.append(binary);
// 0을 2로, 1을 0으로, 2를 1로
String flippedStr = sb.toString().replace('0', '2').replace('1', '0').replace('2', '1');
// string -> 2진수
return Long.parseLong(flippedStr, 2);
}
아악 2진수로 바꾸고 sb 만들어서 추가하는 거까진 했는데 ....
0을 저렇게 채워주면 되는구나 ...
0이랑 1뒤집기 할 때 temp 하듯이 뒤집기 !!! ㅠ 생각도 못했다
'코딩테스트 > HackerRank' 카테고리의 다른 글
[HackerRank] Flipping the Matrix 📌 (0) | 2023.04.12 |
---|---|
[HackerRank] FindTheMedian ✔ (0) | 2023.04.12 |
[HackerRank] XOR Strings 2 ✔ (0) | 2023.04.11 |
[HackerRank] Between Two Sets 📌 (여러 수 최대공약수, 최소공배수) (0) | 2023.04.10 |
[HackerRank] Palindrome Index(투포인터) 📌 (1) | 2023.04.09 |