[프로그래머스] 점프와 순간이동



Programmers - [Summer/Winter Coding(~2018)] 점프와 순간이동




사용 언어 - C++

소요 시간 - 약 13분




문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/12980




문제 요약

  1. 점프 - 칸당 건전지 사용 1 증가
  2. 순간이동 - 건전지 사용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;
}




트러블 슈팅




풀이 절차

  1. 과정 → 결과가 아닌 결과 → 과정 순으로 반대로 접근.
  2. 결국 구해야 하는 것은 점프의 칸 수.
  3. 반대로 생각하는 것이므로 순간이동은 /= 2
  4. 홀수인 경우, 점프로 간주(짝수인 경우에는 순간이동을 하는 것이 효율적이기 때문에 점프는 홀수로만 간주하는 것)




문제 풀이 후 소감

  • 조금만 생각해보면 그렇게 어렵지 않은 풀이가 나오는 문제였던 것 같다