본문 바로가기
Algorithm/프로그래머스

[프로그래머스] 파이썬 문제풀이 - 점프와 순간 이동

by whdgus928 2023. 5. 10.

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

 

프로그래머스

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

programmers.co.kr

첫 풀이

1. n의 범위가 상당히 크므로 규칙이 있다고 생각했다

2. 온거리만큼 순간이동하는게 k칸 점프보다 무조건 우선순위가 되야한다

3. 1부터 올라가기보다 n에서 내려가는 방법이 효울적이라고 생각했다

4. n부터 2로 나누며 내려온다. 나눠서 홀수가 되면 1을 빼서 짝수를 만들어준다

5. 1을 뺐을때는 에너지를 사용했으므로 답에 1을더해준다

6. 1이 될때까지 반복한다

def solution(n):
    ans = 1
    while n!=1:
        if n%2==0:
            n=n/2
        else:
            n-=1
            ans+=1
    return ans

 

더 나은 답안

1.  코드를 더 간결하게 할 수 부분이 있다.

2. if 문을 %와 //연산으로 바꿀수있다

3. %은 나머지가 없으면 안 더하므로 상관없고 //을 사용하면 소수점을 버려서 2로 나눈 결과가 나온다

def solution(n):
    ans = 1
    while n!=1:
        ans+=n%2
        n=n//2
    return ans

 

배운 점

1. 하루에 2문제씩 꾸준하게 풀다보니 조금씩 느는게 느껴진다

2. 일반 구현문제에서는 n의 범위가 큰 경우가 많아서 최대한 규칙을 이용해서 푸는게 중요한거같다

3. 간만에 첫 풀이로 통과해서 행복했다

반응형

댓글