일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- dynamic programming
- bit manipulation
- java
- 자바
- implement
- 구현
- Binary Tree
- 코테
- Number Theory
- Matrix
- string
- Binary Search
- 파이썬
- Math
- hash table
- two pointers
- Stack
- greedy
- Tree
- array
- geometry
- Class
- SQL
- Method
- database
- Data Structure
- Counting
- simulation
- 코딩테스트
- sorting
- Today
- Total
목록bit manipulation (24)
코린이의 소소한 공부노트
1. Input 1) 정수 n 2) 정수 start 2. Output 1) 아래 규칙에 따라 만든 배열 nums의 요소들을 모두 bitwise XOR를 계산한 결과 // 규칙 - nums[i] = start + 2*i (i=0, 1, ..., n-1) 3. Constraint 1) 1 010 ^ 100 = 110 -> 6 - 0 ^ 2 ^ 4 ^ 6 -> 110 ^ 110 = 000 -> 0 - 0 ^ 2 ^ 4 ^ 6 ^ 8 -> 0000 ^ 1000 = 1000 -> 8 5. Code 1) 첫 코드(2022/06/05) int result = start; for(int i=1 ; i
1. Input 1) 정수 num 2. Output 1) 다음 규칙에 따라 0이 될때까지 계산해야하는 횟수 2) 규칙 - 짝수는 2로 나눈다. - 홀수는 1을 뺀다. 3. Constraint 1) 0 짝수 -> 7 - 2회: 7 -> 홀수 -> 6 - 3회: 6 -> 짝수 -> 3 - 4회: 3 -> 홀수 -> 2 - 5회: 2 -> 짝수 -> 1 - 6회: 1 -> 홀수 -> 0 - 따라서 6을 반환한다. 5. Code 1) 첫 코드(2022/06/03) int count = 0; if(num==0) return 0; while(num>1){ if(num%2 == 0) num /= 2; else num -= 1; count++; } return count+1;
1. Input 1) int 변수 n 2. Output 1) n의 2의 보수 반환 3. Constraint 1) 0 Output: 2 설명: 5는 2진수로 101 -> 보수 처리하면 010 -> 2진수 010을 10진수로 바꾸면 2 5. Code 1) 첫 코드(2022/07/27) String s1 = Integer.toBinaryString(n); int len = s1.length(); int output = 0; for(int i=0 ; i
1. Input 1) 정수 left 2) 정수 right 2. Output 1) [left, right] 범위의 정수 중 2진수로 바꿨을 때 1의 개수가 소수인 수의 개수 3. Constraint 1) 1 1011 -> 1이 3개 -> 3는 소수(O) 12 -> 1100 -> 1이 2개 -> 2는 소수(O) 13 -> 1101 -> 1이 3개 -> 3는 소수(O) 14 -> 1110 -> 1이 3개 -> 3는 소수(O) 15 -> 1111 -> 1이 4개 -> 4는 합성수(X) 따라서 5를 반환한다. 5. Code 1) 첫 코드(2022/06/29) int count = 0; for(int i=left ; i=1){ d += n%2; n /= 2; } if(isPrime(d)) count++; } // ..
1. Input 1) 양의 정수 n 2. Output 1) n을 2진수로 변환했을 때 0과 1이 번갈아가며 나오면 true, 아니면 false를 반환 3. Constraint 1) 1 Output: false 설명: - 5 = 101(2)이므로 true를 반환한다. - 7 = 111(2)이므로 false를 반환한다. 5. Code 1) 첫 코드(2022/07/06) String s = Integer.toBinaryString(n); for(int i=0 ; i0){ if(n%2!=prev){ prev = n%2; n /= 2; } else{ answer = false; break; } } return answer; - 1번에 비해 빠르고 공간 절약도 많이 했다.
1. Input 1) 정수 num 2. Output 1) num의 2의 보수 2) 2의 보수(complement)란 2진수로 표현했을 때 0을 1로, 1을 0으로 바꾼 후 다시 10진수로 변환한 수를 말한다. 3. Constraint 1) 1 Output: 2 설명: 5를 2진수로 표현하면 101 -> 0과 1을 뒤집으면 010 -> 이를 다시 10진수로 바꾸면 2 5. Code 1) 첫 코드(2022/06/30) long n =(int)(Math.log10(num) / Math.log10(2)); return (int)((long)Math.pow(2,n+1)-1-num); - 어떤 수 x와 x의 2의 보수 y가 있을 때 x+y를 2진수로 표현하면 1로 가득 찬 수가 된다. - 5 = 101(2), 2=..
1. Input 1) 정수 x 2) 정수 y 2. Output 1) x, y의 hamming distance 2) hamming distance란 두 정수를 2진수로 나타냈을 때 같은 위치, 다른 bit의 수 3. Constraint 1) 0 y){ for(int i=0 ; i
1. Input 1) 정수 n 2. Output 1) n이 4의 거듭제곱이면 true, 아니면 false 반환 3. Constraint 1) - 2^31 Output: false 5. Code 1) 첫 코드(2022/07/19) if(n==1) return true; if(n=4) num /= 4; if(num==1) return true; else return false;
1. Input 1) 정수 n 2. Output 1) 0부터 n까지의 정수를 2진수로 표현한 문자열에서 나타나는 1의 개수를 담은 int 배열 3. Constraint 1) 0 2진수 -> 1의 개수로 표현해보면 0 -> 0 -> 0 1 -> 1 -> 1 2 -> 10 -> 1 3 -> 11 -> 2 4 -> 100 -> 1 5 -> 101 -> 2 5. Code 1) 첫 코드(2022/06/16) if(n == 0) return new int[] {0}; int[] ans = new int[n+1]; ans[0] = 0; for(int i=1 ; i=1){ ans[i] += num%2; num /= 2; } } return ans; 2) 배운걸 토대로 수정해본 코드(2022/11/29) int[] an..