Notice
250x250
Recent Posts
Recent Comments
Link
넘치게 채우기
[LeetCode] 1404. Number of Steps to Reduce a Number in Binary Representation to One 본문
PS/LeetCode
[LeetCode] 1404. Number of Steps to Reduce a Number in Binary Representation to One
riveroverflow 2024. 5. 29. 12:22728x90
반응형
leetcode - Number of Steps to Reduce a Number in Binary Representation to One
문제 유형 : 비트마스킹, 그리디
문제 난이도 : Medium
문제
Given the binary representation of an integer as a string s, return the number of steps to reduce it to 1 under the following rules:
- If the current number is even, you have to divide it by 2.
- If the current number is odd, you have to add 1 to it.
It is guaranteed that you can always reach one for all test cases.
s에 이진수 문자열이 주어진다.
연산은 다음과 같이 할 수 있다:
- 만약 현재 짝수이면, 2를 나눈다.
- 만약 현재 홀수이면, 1을 더한다.
s를 1로 만들기 위한 연산수를 구하시오.
풀이
짝수면 그냥 2로 나누는거지만, 홀수는 1을 더하고 2로 나누어야 한다.
그리고 홀수면, 다음 수로 캐리가 반드시 주어질 것이다.
현재 수가 짝수면, 그냥 연산수를 1 누적,
홀수면 캐리를 1로 조정시키고, 연산수를 2 누적시킨다.(1더함 + 1나눔)
이를 각 자릿수별로 하면 된다.
코드
C++
class Solution {
public:
int numSteps(string s) {
int n = s.size();
int ans = 0;
int carry = 0;
for (int i = n - 1; i > 0; --i) {
if ((s[i] - '0' + carry) % 2 == 0) {
ans++;
} else {
carry = 1;
ans += 2;
}
}
return ans + carry; // if carry is 1, we need an extra step to add 1 to the most significant bit
}
};
728x90
반응형
'PS > LeetCode' 카테고리의 다른 글
[LeetCode] 260. Single Number III (0) | 2024.05.31 |
---|---|
[LeetCode] 1442. Count Triplets That Can Form Two Arrays of Equal XOR (0) | 2024.05.30 |
[LeetCode] 1208. Get Equal Substrings Within Budget (0) | 2024.05.28 |
[LeetCode] 1608. Special Array With X Elements Greater Than or Equal X (0) | 2024.05.27 |
[LeetCode] 552. Student Attendance Record II (0) | 2024.05.26 |