알고리즘 문제풀이

백준 22950 이진수 나눗셈 Python 수학 시간 브론즈1

아크몽 2024. 3. 6. 23:25

시간과의 문제였다.

정답 코드

# 22950 이진수 나눗셈 브론즈1
'''
충분히 큰 수 + 시간제한
=> 시간복잡도를 생각해야한다.
'''
n = int(input())
m = input()
k = int(input())
if '1' not in m:
    print('YES')
    exit(0)
if k==0:
    print('YES')
    exit(0)
x = -1
cnt = 0
while m[x] == '0':
    x -= 1
    cnt += 1
    if cnt ==n:
        break
# print(cnt)
if cnt >= k:
    print('YES')
else:
    print('NO')

문제점

int()를 통한 형변환을 할 시 시간복잡도가 증가하는 듯 하다. 이 코드가 없으니 아무리 큰 수라도 문제가 없었음

if int(m) == 0:
    print('YES')
    exit(0)

수정했지만, 시간초과가 뜬 코드

n = int(input())
m = input()
k = int(input())

if int(m) == 0:
    print('YES')
    exit(0)
x = -1
cnt = 0
while m[x] == '0':
    x -= 1
    cnt += 1
    if cnt ==n:
        break
# print(cnt)
if cnt >= k:
    print('YES')
else:
    print('NO')

시간제한 걸림, 가장 첫 코드

# 22950 이진수 나눗셈 브론즈1
n = int(input())
m = int(input())
k = int(input())
if m % 2**k == 0:
    print('yes')
else:
    print('no')