ISBN

FinalForever·2025년 12월 29일
post-thumbnail

ISBN

예제 입력 1

0번부터 13번을 표로 만들었습니다.
두번째 표는 ISBN 숫자

012345678910111213
97889687322*73

각 자리마다 가중치 1, 3, 1, 3... 곱한 것을 모두 더합니다.
마지막 검증 숫자 = 3

둘째줄은 3을 전부 곱해줍니다.

98982*
2124189621

별 제외 합: 9+21+8+24+9+18+8+9+2+6+21 = 135

(앞12자리합 + 검증숫자) % 10 == 0

(135 + + 3) % 10 == 0
(138 +
) % 10 == 0

코드

import java.util.*;

public class ISBN {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        // ISBN 코드
        String s = sc.next();
        
        int sum = 0;	// '*'을 제외한 앞 12자리의 합
        int start = -1;	// '*'이 위치한 인덱스
        
        // 앞의 12자리
        for(int i=0; i<12; i++) {
            char c = s.charAt(i);
            
            // 짝수 → 1, 홀수 → 3
            int isbn = ( i % 2 == 1 ) ? 3 : 1; 
            
            if(c == '*') {
            // '*'이면 위치만 저장 (값은 아직 모름)
                start = i;
            } else {
            // 숫자라면 가중치를 곱해서 합에 더함
                sum += (c-'0')*isbn;
            }
        }
        
        // 마지막 자리(검증 숫자)
        int check = s.charAt(12)-'0';
        // '*'이 위치한 자리의 계산
        int checknum = (start % 2 == 1) ? 3 : 1;
        
        // '*'에 들어갈 숫자 범위 0~9 까지
        for(int x=0; x<=9; x++) {
        // 전체 합이 10의 배수가 되면 ISBN
            if((sum + x * checknum + check) % 10 == 0) {
                System.out.println(x);
                break;
            }
        }
        sc.close();
    }
}

나름 학창시절에 도서부원이었어서 쉬울줄 알았는데,
정멀 쉽지않았던 문제. 🙂

profile
No More Struggle & Machine Mind

0개의 댓글