알고리즘 문제풀이
백준 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')