http://acmicpc.net/problem/21756
{코드}
from math import log2, ceil
n = log2(int(input()))
print(int(2**int(n)))
# --- #
from math import log2
print(int(2**log2(int(input()))))
{설명}
주어진 수가 n일때 답은 2^m <= n < 2^m+1에서 m이 됩니다.
먼저 홀수가 사라지기에 짝수가 답일 수 밖에 없습니다.
그 후에도 결국 절반으로 나누는 연산을 계속하기 때문에 결과적으로 2의 제곱수가 답이 됩니다.
m을 구하기 위해 로그를 구한 후 2**m을 하면 됩니다.
'알고리즘 공부 > BOJ백준 풀이' 카테고리의 다른 글
[백준 17612번-파이썬] 쇼핑몰 (0) | 2021.06.14 |
---|---|
[백준 21760번-파이썬] 야구 시즌 (0) | 2021.06.14 |
[백준 18870번-파이썬] 좌표 압축 (0) | 2021.06.14 |
[백준 10773번-파이썬] 제로 (0) | 2021.06.14 |
[백준 4949번-파이썬] 균형잡힌 세상 (0) | 2021.06.14 |