주녘공부일지

[프로그래머스 C#] Lv.2 점프와 순간 이동 본문

Programmers - C#/CodingTest Lv.2

[프로그래머스 C#] Lv.2 점프와 순간 이동

주녘 2023. 12. 7. 13:19
728x90

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

1. 정답코드 및 핵심 아이디어, 유의사항

- 가야하는 거리 n이 짝수라면 2를 나누어주어도 에너지는 소비되지 않음

( 순간이동으로 이동 가능하므로 목표 거리가 바뀐다고 생각해도 됨 : 54와 27은 같은 에너지를 소비함 )

- 가야하는 거리 n이 홀수라면 에너지를 1 사용할 수밖에 없음

 ( 무조건 점프를 해야 하는 경우 : 27은 26보다 에너지를 1 더 소비함 )

 

즉, n이 0이 될때까지 짝수라면 나누고, 홀수라면 에너지를 1 사용하면 됨

 

주석 참조

    using System;

    class Solution
    {
        public int solution(int n)
        {
            int answer = 0; // 에너지

            while (n != 0)
            {
                if (n % 2 != 0) // 점프
                {
                    n--;
                    answer++;
                }
                else // 순간이동
                    n /= 2;
            }

            return answer;
        }
    }
728x90