You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
import sys
n = int(sys.stdin.readline())
m = int(sys.stdin.readline())
ans = abs(100 - n)
if m > 0:
error = list(sys.stdin.readline().split())
for i in range(1000000):
for j in str(i):
if j in error:
break
else:
ans = min(ans, len(str(i)) + abs(i - n))
print(ans)
elif m == 0:
error = []
print(min(len(str(n)), ans))
가장 먼저 떠오른 아이디어는 브루트포스였지만 이걸로 풀릴리가 없다고 생각하고 DP로 시도했다가 실패를 맛봤다.
이동하고자 하는 채널을 str형식으로 리스트 형태로 쪼개서 한글자씩 비교해준다.
만약에 고장난 버튼 숫자에 해당하는 error 리스트에 숫자가 있을경우 탈출 그렇지않을 경우 ans에 값을 대입해 준다.
1000000의 반복문이 끝나고 나면 ans에는 순수하게 버튼을 눌렀을때 도달 할 수 있는 n에 가장 근접한값 + 버튼 누른 횟수 와 100번 부터 단순히 증감해서 나올 수 있는 값 두개를 비교해서 더 작은걸 출력해준다! m==0 은 하드코딩으로 예외처리를 해줬다.
DP로 풀어야하는 문제는 브루트포스로... 브루트포스로 풀어야하는 문제는 DP로 접근하는 내 인생...
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
-
가장 먼저 떠오른 아이디어는 브루트포스였지만 이걸로 풀릴리가 없다고 생각하고 DP로 시도했다가 실패를 맛봤다.
이동하고자 하는 채널을 str형식으로 리스트 형태로 쪼개서 한글자씩 비교해준다.
만약에 고장난 버튼 숫자에 해당하는 error 리스트에 숫자가 있을경우 탈출 그렇지않을 경우 ans에 값을 대입해 준다.
1000000의 반복문이 끝나고 나면 ans에는 순수하게 버튼을 눌렀을때 도달 할 수 있는 n에 가장 근접한값 + 버튼 누른 횟수 와 100번 부터 단순히 증감해서 나올 수 있는 값 두개를 비교해서 더 작은걸 출력해준다! m==0 은 하드코딩으로 예외처리를 해줬다.
DP로 풀어야하는 문제는 브루트포스로... 브루트포스로 풀어야하는 문제는 DP로 접근하는 내 인생...
Beta Was this translation helpful? Give feedback.
All reactions