tier ISBN

풀이

훼손된 숫자는 한 자리이므로 가능한 경우의 수는 부터 까지 가지가 있습니다.

브루트포스 알고리즘을 사용해 모든 경우를 검사해서 체크기호를 만족시키는 경우를 찾으면 됩니다.

코드

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()