일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- geometry
- SQL
- Counting
- dynamic programming
- Stack
- simulation
- greedy
- Tree
- java
- Number Theory
- two pointers
- implement
- string
- bit manipulation
- array
- sorting
- Data Structure
- Binary Search
- 코딩테스트
- 구현
- Math
- database
- Class
- hash table
- Matrix
- Method
- 코테
- Binary Tree
- 자바
- 파이썬
- Today
- Total
목록bit manipulation (24)
코린이의 소소한 공부노트
1. Problem - 비트 마스크 기법을 이용해 여러 연산을 수행해보자. 1) 비트 마스크 기법은 비트 연산자(&, | 등)를 활용해서 정수(int)의 이진 비트를 처리해 메모리를 적게 사용하면서 프로그램의 속도를 높이는 기법이다. 2) 모든 문제에 사용할 수 있는 것은 아니지만, 사용할 수 있다면 소스코드가 직관적으로 바뀌게 된다. - 예를 들어, 출석을 1, 결석을 0으로 표시한다고 했을 때 한 반에 32명인데 3번과 6번이 출석이라면 00000000 00000000 00000000 00100100 (2) = 36으로 표현할 수 있다. 3) 정수를 2진 비트로 표현할 때 음수를 표현하는 것은 2의 보수를 이용한다. // 8비트로 예를 들자면 30 = 0001 1110 -30 -> 1110 0001 ..
1. Input 1) String s 2) String t 2. Output 1) s가 t가 되기 위해서 추가해야 하는 문자를 반환 3. Constraint 1) 0
1. Input 1) String a 2) String b 2. Output 1) 2진수를 담은 문자열 a,b의 합을 2진수 문자열로 반환 3. Constraint 1) 1 =0 || bi>=0){ int sum = carry; if(ai>=0) sum += a.charAt(ai--)=='1' ? 1 : 0; if(bi>=0) sum += b.charAt(bi--)=='1' ? 1 : 0; carry = sum/2; st.push(sum%2); } if(carry==1) st.push(1); StringBuilder sb = new StringBuilder(); while(!st.empty()) sb.append(st.pop()); return sb.toString(); } } - 스택을 이용하지 않고 ..
1. Input 1) int[] nums 2. Output 1) nums의 요소를 n개의 쌍으로 나눌 수 있다면 true, 아니면 false를 반환 - 한 쌍의 요소는 같은 값이어야 한다. - 한 쌍에 있는 요소의 수는 같아야 한다. 3. Constraint 1) nums.length == 2 * n 2) 1
1. Input 1) int[] nums - nums에는 1부터 n까지의 수가 담겨있다. - n == nums.length 2. Output 1) nums의 요소 중 2번 나오는 숫자와 빼먹은 숫자가 차례대로 담긴 int[]를 반환 3. Constraint 1) 2
1. Input 1) int[] nums - nums의 요소 중 1개를 제외한 모든 요소들은 3번씩 등장한다. 2. Output 1) nums에 딱 1번 등장하는 요소를 찾아 반환 3. Constraint 1) 1
1. Input 1) 정수 start 2) 정수 goal 2. Output 1) start에 bit flip을 여러 번 수행해 goal을 만들 때, 필요한 bit flip의 최소 횟수를 반환 - bit flip이란 수를 2진수로 표현한 후 0을 1로, 1을 0으로 바꾸는 것을 말한다. 3. Constraint 1) 0 1011 - 앞에서부터 2번째 비트: 1011 -> 1111 - 앞에서부터 1번째 비트: 1111 -> 0111 - 따라서 필요한 bit flip의 최소 횟수는 3이다. 5. Code 1) 첫 코드(2022/06/14) String s = Integer.toBinaryString(start); String g = Integer.toBinaryString(goal); String p = ""..
1. Input 1) 정수 배열 encoded - encoded의 길이는 n-1이다. 2) 정수 first 2. Output 1) 다음 규칙을 이용해 해독한 배열 arr - arr의 길이는 n이다. // 규칙 - arr[0] == first - encoded[i] == arr[i] XOR arr[i+1] 3. Constraint 1) 2
1. Input 1) 문자열 allowed 2) 문자열 배열 words 2. Output 1) words의 요소 중 allowed에 있는 문자로만 이루어진 요소의 개수를 반환 3. Constraint 1) 1