알고리즘

[프로그래머스] 점프와 순간 이동

j9972 2023. 6. 29. 11:17
728x90

1. 문제

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

 

프로그래머스

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

programmers.co.kr

 

2. 접근

1. 1부터 n까지 접근해야하는데 n부터 1로 다가간다고 생각하면 된다

2. n의 값이 짝수인지 홀수인지 판단하여, 짝수면 2로 나누고, 홀수면 -1을 해주고 ans += 1을 해준다

3. 조심해야 하는게 테스트 코드에서 n 의 값이 1일때는 1을 return 해줘야한다는 것이다

 

3. 풀이

def checkNum(n):
    if n % 2 == 0:
        return True
    else:
        return False

def solution(n):
    ans = 0
    
    if n == 1:
        return 1
    
    while True:
        if checkNum(n):
            n //= 2
        else:
            n -= 1
            ans += 1
        
        if n == 2:
            ans += 1
            break
        if n == 1:
            break
            

    return ans