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

[프로그래머스] 점프와 순간 이동 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2023. 7. 12.
728x90
반응형

 

 

프로그래머스

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

programmers.co.kr

 

1. 문제 설명

2. 풀이과정

해당 문제를 풀 때 어떻게 하면 건전지를 최소로 사용할 수 있을지 생각하면서 순간 이동을 많이 사용해야겠다는 생각을 했다. 1부터 각 경우마다 최소 건전지 사용 횟수를 계산해 보다가 6에서 입출력 예 설명을 보니 6은 1로 점프 후, 2로 순간 이동, 다시 3으로 점프, 6으로 순간 이동한 결과를 확인하게 되었다. 하여 무조건 먼저 순간 이동으로 최대로 이동을 하면 안 되겠다는 생각이 들었다.

이후, 2로 계속 나눠보기도 하고 3으로 나눠보기도 하고 계속 고민을 하던 중 각 수를 2진수로 변환했을 때 해당 2진수의 1의 개수만큼 점프를 하면 된다는 규칙을 발견했다.

 

  1. 입력받은 수의 2진수 결과를 저장해 줄 리스트를 생성한다. li = list()
  2. 입력받은 수가 0이 될 때까지 반복하며 while (n != 0)
  3. 입력받은 수를 2로 나눈 나머지를 리스트에 추가하고 li.append(n % 2)
  4. 수를 2로 나눈 몫으로 새로 저장한다. n //= 2
  5. 2진수로 바꾼 결과 리스트에서 1의 개수를 세어 정답에 저장한다. ans = li.count(1)
반응형

3. 소스코드

def solution(n):
    ans = 0
    
    li = list()
    while (n != 0):
        li.append(n % 2)
        n //= 2
        
    ans = li.count(1)

    return ans
728x90
반응형