반응형
https://programmers.co.kr/learn/courses/30/lessons/12980
진수활용 문제였습니다.
풀이방법
*가장 먼저 떠올릴 수 있는 풀이방법은 bfs나 다익스트라이지만 n이 10억이므로 시간복잡도가 높아집니다. 따라서 다른 방식을 생각해야합니다.
점프를 한 것은 현재자리에서 1칸을 움직인 것에 해당하며 순간 이동을 하게되면 현재자리에서 *2를 하므로 다음 자리로 넘어가게 됩니다. 이는 이진수의 속성에 대입해볼 수 있습니다. 구현은 정말 쉽지만 생각을 확장해야하는 문제입니다.
Code
#include <bits/stdc++.h>
using namespace std;
int solution(int n){
int ans = 0;
while(n){
ans += n % 2;
n /= 2;
}
return ans;
}
'Algorithm > Math' 카테고리의 다른 글
(C++) - 프로그래머스(연습문제) : 최고의 집합 (0) | 2021.05.18 |
---|---|
(C++) - 프로그래머스(2017 팁스타운) : 예상 대진표 (0) | 2021.05.17 |
(C++) - 백준(BOJ) 2407번 : 조합 (3) | 2021.05.02 |
(C++) - 백준(BOJ) 10972번 : 다음 수열 (0) | 2021.05.02 |
(C++) - 백준(BOJ) 16479번 : 컵라면 측정하기 (0) | 2021.05.02 |