[알고리즘/백준] 1052번 : 물병(python)

유현민·2022년 2월 22일
0

알고리즘

목록 보기
20/253

이거는 아무리 생각해도 모르겠어서 찾아봤다. 2진수를 이용해서 푸는 문제였다...

내 코드로 하면 시간 초과가 난다. 왜 그런지 모르겠다...

import sys


def check(n, k):
    result = 0
    while bin(n).count('1') > k:
        cnt = 0
        cnt += bin(n).count('1')
        n += 1
        result += 1
    return result


if __name__ == '__main__':
    N, K = map(int, sys.stdin.readline().split())
    print(check(N, K))

그래서 다른 사람 코드로 제출했다.

import sys
input = sys.stdin.readline

N, K = map(int, input().split())

answer = 0
while bin(N).count('1') > K:
    plus = 2 ** (bin(N)[::-1].index('1'))
    answer += plus
    N += plus
print(answer)
profile
smilegate megaport infra

0개의 댓글