[Python] 백준/BOJ 14626번: ISBN (Bronze 1)

2025. 8. 17. 19:24·Algorithm/백준 (BOJ)
반응형

💻 Problem

문제 보러 가기

 

ISBN(International Standard Book Number)은 전 세계 모든 도서에 부여된 고유번호로, 국제 표준 도서번호이다. ISBN에는 국가명, 발행자 등의 정보가 담겨 있으며 13자리의 숫자로 표시된다. 그중 마지막 숫자는 체크기호로 ISBN의 정확성 여부를 점검할 수 있는 숫자이다. 이 체크기호는 일련번호의 앞에서부터 각 자리마다 가중치 1, 3, 1, 3…. 를 곱한 것을 모두 더하고, 그 값을 10으로 나눈 나머지가 0이 되도록 만드는 숫자 m을 사용한다. 수학적으로는 다음과 같다.

ISBN이 abcdefghijklm 일 때, a+3b+c+3d+e+3f+g+3h+i+3j+k+3l+m ≡ 0 (mod 10)

즉, 체크기호 m = 10 - (a+3b+c+3d+e+3f+g+3h+i+3j+k+3l) mod 10 이다.

단, 10으로 나눈 나머지 값이 0일 경우 체크기호는 0이다.

전북대학교 중앙도서관에서 사서로 일하고 있는 영훈이는 책 정리를 하다가 개구쟁이 광현이에 의해서 ISBN이 훼손된 도서들을 발견했다. 광현이 때문에 야근해야 하는 불쌍한 영훈이를 위해서 손상된 자리의 숫자를 찾아내는 프로그램을 작성해 주자.

 

💡 Approach

클래스 2 다 풀었던 거 같은데 미해결 문제가 하나 있길래 풀어봤다.

 

  1. 첫 번째 반복문
    1. 전체 13자리 중 훼손된 숫자('*')를 찾으면 위치만 기록하고 건너뛴다.
    2. 나머지 숫자는 ISBN 규칙에 따라 인덱스가 짝수면 가중치 1, 홀수면 가중치 3을 곱해 합계(total)에 더한다.
  2. 두 번째 반복문
    1. 0~9를 하나씩 훼손된 숫자 위치에 넣고, 기존 합계에 숫자 × 준비해 놓은 가중치(target 위치가 짝수면 1, 홀수면 3)를 더했을 때 10으로 나눠 떨어지면 정답이다.

 

✏️ Solution

import sys
input = sys.stdin.readline

num = input().rstrip()
total = 0
target = -1

for i in range(13):
    # 훼손된 숫자를 찾으면 위치 기록
    if num[i] == '*':
        target = i
        continue
    
    # 짝수면 가중치가 1, 홀수면 가중치가 3
    weight = 1 if i % 2 == 0 else 3
    total += int(num[i]) * weight

weight = 1 if target % 2 == 0 else 3
for i in range(10):
    if (total + i * weight) % 10 == 0:
        print(i)
        break

 

반응형

'Algorithm > 백준 (BOJ)' 카테고리의 다른 글

[Python] 백준/BOJ 1932번: 정수 삼각형 (Silver 1)  (0) 2025.08.19
[Python] 백준/BOJ 14500번: 테트로미노 (Gold 4)  (0) 2025.08.18
백준/BOJ: N과 M 문제 모음 (순열/조합 정리)  (0) 2025.08.16
[Python] 백준/BOJ 15666번: N과 M (12) (Silver 2)  (1) 2025.08.16
'Algorithm/백준 (BOJ)' 카테고리의 다른 글
  • [Python] 백준/BOJ 1932번: 정수 삼각형 (Silver 1)
  • [Python] 백준/BOJ 14500번: 테트로미노 (Gold 4)
  • 백준/BOJ: N과 M 문제 모음 (순열/조합 정리)
  • [Python] 백준/BOJ 15666번: N과 M (12) (Silver 2)
올콩
올콩
콩 심은 데 콩 난다
  • 올콩
    콩스토리
    올콩
  • 전체
    오늘
    어제
    • 분류 전체보기 (196) N
      • SSAFY (10)
      • Algorithm (114) N
        • 이론 (6)
        • 백준 (BOJ) (107) N
        • 프로그래머스 (1)
      • Trouble Shooting (9)
      • Frontend (6)
      • React (17)
      • Next.js (4) N
      • Vue (4)
      • Node.js (2)
      • HTML (9)
      • DevOps (4)
        • Git (4)
      • Language (9)
        • JavaScript (0)
        • Java (9)
      • Embedded (1)
      • CS (5)
        • Network (1)
        • Blockchain (4)
      • 자격증 (2)
  • 블로그 메뉴

    • GitHub
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    티스토리챌린지
    Heap
    파이썬
    DP
    SSAFYcial
    우선순위큐
    블록체인
    중복조합
    알고리즘
    싸피
    SSAFY
    백준
    Next.js
    브루트포스
    dfs
    Java
    Algorithm
    수학
    백트래킹
    순열
    bfs
    React
    html5
    구현
    중복순열
    오블완
    강의
    힙
    Error
    재귀
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
올콩
[Python] 백준/BOJ 14626번: ISBN (Bronze 1)
상단으로

티스토리툴바