본문 바로가기
백준/10001 - 15000

[백준] 14626번 : ISBN(JAVA)

by lms0806 2021. 7. 19.
728x90
반응형

 

https://www.acmicpc.net/problem/14626

 

14626번: ISBN

ISBN(International Standard Book Number)은 전 세계 모든 도서에 부여된 고유번호로, 국제 표준 도서번호이다. ISBN에는 국가명, 발행자 등의 정보가 담겨 있으며 13자리의 숫자로 표시된다. 그중 마지막 숫

www.acmicpc.net

 

풀이

13개의 숫자로 이루어진 문자가 주어지고 훼손된 *에 들어갈 숫자를 찾는 문제입니다.

*의 위치만 기록하고 나머지는 짝수번째면 그 숫자 그대로 아니면 *3을 하여 합을 구해줍니다.

*에 들어갈 수는 0부터 9까지이므로 완탐으로 while문을 돌려주면 됩니다.

 

*의 위치가 짝수면 (합 + 찾는 수) % 10 이 0일 때 찾는수가 되므로 출력

홀수면 (합 + 찾는 수 * 3) % 10이 0일 때 찾는 수가 되므로 출력

해주면 됩니다.

 

소스코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
        
        String str = br.readLine();
        
        int check = 0, num = 0;
        for(int i = 0; i < str.length(); i++) {
            char ch = str.charAt(i);
            if(ch != '*') {
                num += i % 2 == 0 ? ch - '0' : (ch - '0') * 3;
            }
            else {
                check = i;
            }
        }
        
        int answer = 0;
        while(true) {
            if(check % 2 == 0) {
                if((num + answer) % 10 == 0) {
                    System.out.print(answer);
                    break;
                }
            }
            else {
                if((num + answer * 3) % 10 == 0) {
                    System.out.print(answer);
                    break;
                }
            }
            answer++;
        }
    }
}
728x90
반응형

댓글