본문 바로가기

programmers

[c++ programmers 점프와 순간이동]

728x90

두 가지 규칙을 이용하여 목적지까지 가는 문제.

1. 점프 - 1만큼 건전지 소모

2. 순간이동 - 현재 위치의 2배인 곳으로 이동, 건전지 소모 x

 

=> 건전지 소모를 최소로 하여 목적지까지 도달?

=> 역행추론이 필요한 문제.

 

ex ) 목적지 - 250

250은 125에서 순간이동

125는 124에서 1만큼 점프

124는 62에서 순간이동

62는 31에서 순간이동

31은 30에서 1만큼 점프

30은 15에서 순간이동

15는 14에서 1만큼 점프

14는 7에서 순간이동

7은 6에서 1만큼 점프

6은 3에서 순간이동

3은 2에서 1만큼 점프

2는 1에서 순간이동

1은 0에서 1만큼 점프

 

따라서 총 소모되는 건전지는 6.

위 과정을 코드로 나타내면 되는데,

이 코드는 신기하게도 목적지 값을 이진수로 표현했을 때의 1의 개수이다. 

(250 = 11111001(2))