프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
점프는 한 칸씩 이동하며 칸당 1만큼 건전지를 사용하고 순간 이동은 건전지를 사용하지 않고 현재까지 온 거리 x 2만큼 이동한다. n만큼 이동할 때 건전지 사용량이 최소가 되는 값 return이므로 n을 2로 나누며 나머지가 1이 될 때마다 answer++해주면 된다.
핵심은 순간이동의 x2이다.
예시를 들면 표와 같이 된다.(점프는 J, 순간이동은 T)
n = 5 | 0 (J)> 1 (T)> 2 (T)> 4 (J)> 5 | answer = 2 |
n = 6 | 0 (J)> 1 (T)> 2 (J)> 3 (T)> 6 | answer = 2 |
n = 5000 | 0 (J)> 1 (T)> 2 .....624 (J)> 625 (T)> 1250 (T)> 2500 (T)> 5000 | answer = 5 |
풀이 방법
1. n을 2로 나눈 나머지가 1이면 answer++
2. n /= 2를 한 뒤 반복
3. 반복이 끝나면 answer 리턴
#include <iostream>
using namespace std;
int solution(int n)
{
int ans = 0;
while(n) {
if(n % 2) ans++;
n /= 2;
}
return ans;
}
'프로그래머스 > 2레벨' 카테고리의 다른 글
H-Index/C++ (0) | 2023.01.10 |
---|---|
멀리 뛰기/C++ (0) | 2023.01.10 |
예상 대진표/C++ (0) | 2023.01.10 |
N개의 최소공배수/C++ (0) | 2023.01.10 |
구명보트/C++ (1) | 2023.01.10 |