[알고리즘C++]점프와 순간 이동

후이재·2020년 9월 12일
1

오늘의 문제

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

점프와 순간 이동

나의 풀이

#include <vector>
using namespace std;

int solution(int n)
{
    int ans = 0;
    
    while(n!= 0){
        if(n%2 != 0){ // 홀
            ans++;
            n--;
        }else         // 짝
            n = n/2;
    }
    return ans;
}

모범 답안

#include <iostream>
using namespace std;

int solution(int n)
{
    int ans = 0;
    while(n >0)
    {
        ans += n%2;
        n /=2;
    }

    return ans;
}

배울 점

  • 멍청하게도 처음에 dp를 이용해서 풀려했음. 규칙성을 찾는게 우선이다!
  • 위 코드는 나머지가 어차피 1인 것을 이용하여 ans에 더했다 영리해!
profile
공부를 위한 벨로그

0개의 댓글