Algorithm/프로그래머스 문제풀이

[C++] 점프와 순간이동

계속지나가기 2020. 10. 7. 19:50
반응형

programmers.co.kr/learn/courses/30/lessons/12980

 

코딩테스트 연습 - 점프와 순간 이동

OO 연구소는 한 번에 K 칸을 앞으로 점프하거나, (현재까지 온 거리) x 2 에 해당하는 위치로 순간이동을 할 수 있는 특수한 기능을 가진 아이언 슈트를 개발하여 판매하고 있습니다. 이 아이언 슈�

programmers.co.kr

c++ 코드

#include <iostream>

using namespace std;

int solution(int n){
    int tmp, ans;
    ans = 1;// 순간이동을 하기 위해서는 최초 1칸은 이동
        
    while( n != 1){
         tmp = 0;
        // 입력받은 길이가 홀수 일 경우 teleport후 jump 1번을 더 해줘야 하므로 비용 1 증가
        if( n % 2 != 0){
            n -= 1;
            tmp = 1;
        }
        // 입력받은 길이가 짝수 일 경우 (길이/2)지점에서 텔레포트
        else
            n /= 2;
        // 비용이 들었을 경우 ans + 1
        if( tmp ) 
            ans += tmp;
    }
    return ans;
}

 

반응형