안녕 세상아,

[프로그래머스/c++] Lv2 점프와 순간 이동 본문

프로그래머스

[프로그래머스/c++] Lv2 점프와 순간 이동

돈 많은 백수가 되고싶다 2024. 9. 18. 15:04

https://school.programmers.co.kr/learn/courses/30/lessons/12980

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

1. 짝수일 때와 홀수일 때 나눠서 생각한다. 

2. 시작부터 하면 너무 오래 걸리니까 n부터 뒤에서 빼준다. 

3. 짝수일 때는 순간이동을 해서 ans가 ++ 되지 않기 때문에 최대한 많이 나눠준다.

4. 홀수일 때는 점프를 하기 때문에 ans가 ++가 된다. 

#include <iostream>
using namespace std;

int solution(int n)
{
    int ans = 0;

    while (n != 0) {
        if (n % 2 == 0) { //만약 짝수라면
            n = n / 2;
        }
        else {   //홀수라면?
            ans++;
            n = n - 1;
        }
    }

    return ans;
}