[프로그래머스] 점프와 순간이동
Programmers - [Summer/Winter Coding(~2018)] 점프와 순간이동
사용 언어 - C++
소요 시간 - 약 13분
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/12980
문제 요약
- 점프 - 칸당 건전지 사용 1 증가
- 순간이동 - 건전지 사용X, 현재 위치 * 2인 칸으로 이동
최종 코드
#include <iostream>
using namespace std;
int solution(int n)
{
int ans = 0;
while(n > 0)
{
if(n % 2 == 1) ans++;
n /= 2;
}
return ans;
}
트러블 슈팅
풀이 절차
- 과정 → 결과가 아닌 결과 → 과정 순으로 반대로 접근.
- 결국 구해야 하는 것은 점프의 칸 수.
- 반대로 생각하는 것이므로 순간이동은 /= 2
- 홀수인 경우, 점프로 간주(짝수인 경우에는 순간이동을 하는 것이 효율적이기 때문에 점프는 홀수로만 간주하는 것)
문제 풀이 후 소감
- 조금만 생각해보면 그렇게 어렵지 않은 풀이가 나오는 문제였던 것 같다