티스토리 뷰
Problem
Given an integer num, return the number of steps to reduce it to zero.
In one step, if the current number is even, you have to divide it by 2, otherwise, you have to subtract 1 from it.
Example 1:
Input: num = 14
Output: 6
Explanation:
Step 1) 14 is even; divide by 2 and obtain 7.
Step 2) 7 is odd; subtract 1 and obtain 6.
Step 3) 6 is even; divide by 2 and obtain 3.
Step 4) 3 is odd; subtract 1 and obtain 2.
Step 5) 2 is even; divide by 2 and obtain 1.
Step 6) 1 is odd; subtract 1 and obtain 0.
Example 2:
Input: num = 8
Output: 4
Explanation:
Step 1) 8 is even; divide by 2 and obtain 4.
Step 2) 4 is even; divide by 2 and obtain 2.
Step 3) 2 is even; divide by 2 and obtain 1.
Step 4) 1 is odd; subtract 1 and obtain 0.
Example 3:
Input: num = 123
Output: 12
Constraints:
- 0 <= num <= 10^6
Solution
정수가 주어질 때 0이 될때까지의 연산 횟수를 반환하는 문제입니다.
2로 나누거나 1을 빼는 것을 한 연산으로 간주합니다.
easy
난이도 답게 매우 쉬우므로 소스 코드로 풀이를 대체합니다.
public class Solution {
public int numberOfSteps(int num) {
int count = 0;
while (num != 0) {
if (num % 2 == 0) {
num /= 2; // 짝수일 때 2로 나눔
} else {
num--; // 홀수일 때 1을 뺌
}
count++;
}
return count;
}
}
Test
package io.lcalmsky.leetcode.number_of_steps_to_reduce_a_number_to_zero;
import static org.junit.jupiter.api.Assertions.assertAll;
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;
class SolutionTest {
@Test
void testAll() {
assertAll(
() -> test(14, 6),
() -> test(8, 4),
() -> test(123, 12)
);
}
private void test(int given, int expected) {
// when
Solution solution = new Solution();
int actual = solution.numberOfSteps(given);
// then
assertEquals(expected, actual);
}
}
'Algorithm > LeetCode' 카테고리의 다른 글
120. Triangle (0) | 2022.06.18 |
---|---|
167. Two Sum II - Input Array Is Sorted (0) | 2022.06.17 |
268. Missing Number (0) | 2022.06.10 |
1379. Find a Corresponding Node of a Binary Tree in a Clone of That Tree (0) | 2022.06.04 |
191. Number of 1 Bits (0) | 2022.06.03 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Linux
- JSON
- 함께 자라기 후기
- 알고리즘
- QueryDSL
- Spring Boot JPA
- spring boot application
- proto3
- Spring Boot Tutorial
- Jackson
- leetcode
- 함께 자라기
- intellij
- gRPC
- JPA
- 스프링 부트 튜토리얼
- 스프링 부트 애플리케이션
- 스프링부트
- Spring Data JPA
- 클린 아키텍처
- @ManyToOne
- spring boot jwt
- 스프링 부트
- 스프링 데이터 jpa
- Java
- Spring Boot
- spring boot app
- r
- 헥사고날 아키텍처
- 스프링 부트 회원 가입
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함