(생각해보기 문제)점프와 순간이동.

욥·2026년 7월 10일

문제 해결 전략

  • 재귀를 생각했는데, 현재 n이 10억이다...
    -> 재귀로 하면 시간초과 발생할듯 해서, 다른 해결전략 있는지 생각함.

생각해보기

  • 아래의 내용을 토대로 진행함.
 // k만큼 점프하면 k만큼의 건전기 가 소모됨. 
    // 현재 pos에서 순간이동하면 pos*2가 되는데, 이 때는 건전지 소모가 없다. 
    
    
    
    // 그러면 솔까말해서 , 최소 단위로 도착하는 것이 목표가 아니므로,
    // 일단 1만큼 점프해서 도착지점에 인접할때까지 순간이동을 하면되지 않을까 ??? 
    
    // 1 만큼만 점프하자. -> 건전지 1 소모 
    // 2 -> 4 8 16 .. -> 1024 -> 2048 -> 4096 
    
    // 절대 넘어서는 destPos까지 2배하면 안됨! 
    
    // 5000 - 4096 => 904...
   
    // n은 10억이고,, 
    // k는 1이상의 자연수다...
    
    // 그냥 n을 기준으로 해서 진행할까??????
    // n -> 1로 
    
    // 2로 나누어 떨어지면, -> ok
    // 2로 나누어 떨어지지 않으면 ? 
    
    
    // 재귀로 가자. 
    // 매순간 선택을 한다.
    // => 좀 오래 걸릴듯한... 꺼림칙한 느낌이 있따. 
    
    
    // 1에서 시작하면 
        // 2에서 시작하는 거는 1에서 시작하는것과 동일하고,,
    
    // 3에서 시작
        // 0->1로 점프한 번, 1->2로 순간이동, 2->3으로 점프한번 하므로, 총 2번 
    
    // 2로 나누어떨어지는 수를 찾는게 좋은것인가?
    
    // 6->3->    // 종료?  2(나머지 1...)
    
    
    // 그러면 5000 -> 2500 -> 1250 -> 625 -> 
    
    // 625를 어떻게 만들까... 점프 한번 사용.
    // 624 -> 312 -> 156 -> 78 -> 39 -> 38로 점프 한번 사용. 
    
    // 39를 어떻게 만들까??? 점프 한 번 사용.
    // 38 -> 19-> 18로 점프 한번  사용.
    
    
    // 문제 해결 전략
    // 2로 나누는데
    
        // 나머지가 2이면 계속 진행하고, 1이 나오면 점프 한번 증가 + -1씩 진행하는 식으로 하자.

코드

profile
🔥🔥🔥

0개의 댓글