-
43. 점프와 순간 이동코딩 테스트/Level 2 2020. 8. 26. 23:40반응형
https://programmers.co.kr/learn/courses/30/lessons/12980
점프와 순간 이동
Summer/Winter Coding(~2018)
1933명 완료순간이동 즉 (온 거리 * 2)는 공짜...
주어진 조건을 도착 시점을 기준으로 역으로 생각하면
공짜를 최대한 뽑아내려면 * 2 가 되도록 맞춰줘야 하고
맞춰 주려면 2의 배수가 아니면 도착시점 직전에서 1씩 빼주면 됩니다.
물론 이때 건전지 사용량이 1씩 들지만..쉽게 설명하려고 아래처럼 표현을 해 보았지만..
더 복잡해 보이는 것 같네요.. -0-2 * 2 + 1 = 5 # 양변에서 1을 빼자 이때 1 소모
2 * 2 = 4 # /2는 공짜 나눠 주자.
2 = 2 # /2는 공짜
1 = 1 # 양변에서 1을 빼자 이때 1 소모
0 = 0
답은 2def solution(n): answer = 0 while n != 0: if n % 2 == 0: n = n / 2 else: n = n - 1 answer += 1 return answer
작성하고 나니 이건 2진수 변환 공식과 유사하네요.
정확하게 말하면 2진수 변환 후 1을 카운트하는 것....def solution(n): return bin(n).count('1')
풀고 나니 '출제자가 문제를 참 잘 냈구나.'라는 생각이 들었습니다.
solution = lambda n: bin(n).count('1')
이렇게 삐뚤어지고 싶다는 생각이 드는 건 왜 일까요?
반응형