-코드
n = int(input())
arr = []
r = 0
while n > 0:
arr.append(n % 2)
n //= 2
for i in range(len(arr)):
r += arr[i] * (3 ** i)
print(r)
처음에 무슨 말인지 이해를 못해서 찾아보니 2진수와 비슷하게 2진수는 각 자리마다 2의 i승(i >= 0)이지만 이것은 각 지리마다 3의 i승의 수 중 n번째로 작은 수를 구하는 문제임을 알게 되었습니다.
하지만 0101과 같은 2진수를 n에 의해서 만드는 법을 처음에 3 제곱에 치중하여 생각하다가 찾지를 못해서 고민하다가 2진수에 대해서 보고 해결을 하게 되었습니다. 생각의 방향을 이상하게 잡아서 해결을 쉽게 하지 못해서 아쉬운 문제였습니다.
'Beakjoon&프로그래머스 > 파이썬' 카테고리의 다른 글
[백준/파이썬]12605번 단어순서 뒤집기 (0) | 2021.09.24 |
---|---|
[백준/파이썬]1059번 좋은 구간 (0) | 2021.09.24 |
[백준/파이썬]3613번 Java vs C++ (0) | 2021.09.17 |
[백준/파이썬]2057번 팩토리얼 분해 (0) | 2021.09.16 |
[백준/파이썬]17254번 키보드 이벤트 (0) | 2021.09.15 |