반응형
사이트명 : 프로그래머스(Programmers)
문제명 : 점프와 순간 이동
언어 : 자바(Java)
문제를 요약하자면
N숫자를 받아서
그냥 한칸 움직이면 배터리를 1 쓰고
순간 이동을 하면 현재 값에서 *2를 하고 배터리를 쓰지 않는다
내 풀이방법은 아래와 같은데
문제를 역발상으로 해서 풀었는데
채워서 n을 만드는 게 아니라
n에서 나누고 빼가면서 풀었다
먼저 순간이동은 배터리를 소모하지 않고 2배로 이동하니까
N을 2로 나눠서 나눠지면 계속 나누고
나머지값이 나오면 -1을 시킨뒤 배터리에 해당하는 ans 값을 증가시킨다
이후 나눠지면 나누고 안되면 빼고 이런 식으로 0이 될 때까지 진행하면
간단하고 배터리 소모량을 알 수 있다
마지막으로 프로그래머스에 바로 적용 가능한 코드는 아래와 같다
import java.util.*;
public class Solution {
public int solution(int n) {
int ans = 0;
while(n != 0) { // 0 될때까지 반복
if( n % 2 == 0) { // 2로 나눠지면 나눈다
n = n / 2;
} else {
n = n - 1; // 나눠지지 않을 경우 1을 빼본다
ans++; // 배터리 소모
}
}
return ans;
}
}
반응형
'Language > 알고리즘 문제풀이' 카테고리의 다른 글
프로그래머스 x만큼 간격이 있는 n개의 숫자(Java) (0) | 2019.09.24 |
---|---|
프로그래머스 행렬의 덧셈(Java) (0) | 2019.09.24 |
프로그래머스 다음 큰 숫자(Java) (0) | 2019.09.23 |
프로그래머스 JadenCase 문자열 만들기(Java) (0) | 2019.09.19 |
프로그래머스 최댓값과 최솟값(Java) (0) | 2019.09.19 |
댓글