https://school.programmers.co.kr/learn/courses/30/lessons/12980
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
전체 코드
def solution(n):
ans = 0
while n != 1:
if n % 2 == 1:
ans += 1
n -= 1
n = n / 2
return ans+1
알고리즘 설명
반복문을 사용하였다.
코드 설명
배터리를 가장 많이 아낄 수 있는 방법은 1 만큼씩 이동하고 나머지는 순간이동으로 이동하는 방법이라고 생각했다.
따라서 이동해야 할 거리를 2로 나누면서 나누어 떨어지지 않는 경우에는 1을 뺀 뒤 다시 진행하는 방법으로 코드를 작성했다.
이후 정답을 반환할 때는 1을 더한 값을 반환하였다. 1만큼 이동한 뒤 순간이동을 진행할 것이기 때문이다.
다른 사람의 풀이
코드를 작성한 후 다른 사람의 풀이를 확인해 보니 2진법으로 푼 사람이 있었다.
나의 문제 해결을 위한 아이디어도 2진법을 떠올릴 수 있었던 아이디어였던 것 같다.
def solution(n):
return bin(n).count('1')
다양한 문제를 풀며 경험을 쌓는다면 언젠간 나도 저런 멋진 코드를 짤 수 있을 것이다!
'알고리즘(Python)' 카테고리의 다른 글
[프로그래머스 LV.2] 영어 끝말잇기 (2) | 2023.11.24 |
---|---|
[프로그래머스 LV.2] 피보나치 수 (2) | 2023.11.22 |
[프로그래머스 LV.2] 다음 큰 숫자 (2) | 2023.11.22 |
[프로그래머스 LV.2] 더 맵게 (0) | 2023.09.20 |
알골 3번(Python) - 최소공배수, 최대공약수 구하기 (백준 2609번) (0) | 2021.09.04 |