풀이
훼손된 숫자는 한 자리이므로 가능한 경우의 수는
브루트포스 알고리즘을 사용해 모든 경우를 검사해서 체크기호를 만족시키는 경우를 찾으면 됩니다.
코드
def is_valid(isbn: list[int]) -> bool:
sum_ = 0
for i in range(13):
if i % 2 == 0: # 홀수 번째
sum_ += isbn[i]
else:
sum_ += 3 * isbn[i]
return sum_ % 10 == 0
def main():
isbnStr = input()
damaged_index = 0
for i in range(12):
if isbnStr[i] == "*":
damaged_index = i
break
isbn = [0] * 13
for i in range(13):
if i == damaged_index:
continue
isbn[i] = int(isbnStr[i])
for i in range(10):
isbn[damaged_index] = i
if is_valid(isbn):
print(i)
return
main()