Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- dynamic programming
- sorting
- SQL
- Class
- greedy
- Matrix
- Method
- simulation
- hash table
- string
- 구현
- Data Structure
- 자바
- Tree
- database
- two pointers
- 코딩테스트
- Binary Tree
- bit manipulation
- array
- Binary Search
- java
- Math
- Stack
- 파이썬
- Counting
- Number Theory
- 코테
- implement
- geometry
Archives
- Today
- Total
코린이의 소소한 공부노트
[LeetCode/Easy] 2220. Minimum Bit Flips to Convert Number 본문
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 <= start, goal <= 10^9
4. Example
Input: start = 10, goal = 7 -> Output: 3
설명: 10 = 1010(2), 7 = 0111(2)
- 앞에서부터 4번째 비트: 1010 -> 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 = "";
for(int i=0 ; i<Math.abs(s.length()-g.length()) ; i++)
p += "0";
if(start > goal)
g = p + g;
else if(start < goal)
s = p + s;
int count = 0;
for(int i=0 ; i<s.length() ; i++)
if(s.charAt(i) != g.charAt(i))
count++;
return count;
2) 다시 풀어본 코드(2023/01/15)
int answer = 0;
while(start>=1 && goal>=1){
if(start%2 != goal%2)
answer++;
start /= 2; goal /= 2;
}
if(start>=1){
while(start>=1){
answer += start%2;
start /= 2;
}
}else{
while(goal>=1){
answer += goal%2;
goal /= 2;
}
}
return answer;
- 성능이 압도적으로 좋아졌다.
'코딩테스트 풀이 > JAVA' 카테고리의 다른 글
[LeetCode/Easy] 2235. Add Two Integers (0) | 2023.01.16 |
---|---|
[LeetCode/Easy] 2224. Minimum Number of Operations to Convert Time (0) | 2023.01.15 |
[LeetCode/Easy] 2194. Cells in a Range on an Excel Sheet (0) | 2023.01.15 |
[LeetCode/Easy] 2185. Counting Words With a Given Prefix (0) | 2023.01.15 |
[LeetCode/Easy] 2180. Count Integers With Even Digit Sum (0) | 2023.01.15 |